diff --git a/lib/datasource/maven/index.ts b/lib/datasource/maven/index.ts index acbc41ab7141f6027b824711d8b6c5bf3fae4fb2..1a7e6d97acc4fe4abd12da592d35dc2a868d940d 100644 --- a/lib/datasource/maven/index.ts +++ b/lib/datasource/maven/index.ts @@ -28,13 +28,17 @@ function isStableVersion(x: string): boolean { return mavenVersion.isStable(x); } -function getLatestStableVersion(releases: Release[]): string | undefined { - return releases - .map(({ version }) => version) - .filter(isStableVersion) - .reduce((latestVersion, version) => - compare(version, latestVersion) === 1 ? version : latestVersion - ); +function getLatestSuitableVersion(releases: Release[]): string | null { + // istanbul ignore if + if (!releases?.length) { + return null; + } + const allVersions = releases.map(({ version }) => version); + const stableVersions = allVersions.filter(isStableVersion); + const versions = stableVersions.length ? stableVersions : allVersions; + return versions.reduce((latestVersion, version) => + compare(version, latestVersion) === 1 ? version : latestVersion + ); } function extractVersions(metadata: XmlDocument): string[] { @@ -261,10 +265,10 @@ export async function getReleases({ `Found ${releases.length} new releases for ${dependency.display} in repository ${repoUrl}` ); - const latestStableVersion = getLatestStableVersion(releases); + const latestSuitableVersion = getLatestSuitableVersion(releases); const dependencyInfo = - latestStableVersion && - (await getDependencyInfo(dependency, repoUrl, latestStableVersion)); + latestSuitableVersion && + (await getDependencyInfo(dependency, repoUrl, latestSuitableVersion)); return { ...dependency, ...dependencyInfo, releases }; }