Eclipse Aether 没有正确解析`LATEST`
Eclipse Aether not resolving `LATEST` correctly
当我尝试解析 LATEST
版本时,Eclipse Aether 似乎 return 不是正确的版本:
val artifact = DefaultArtifact("org.testng:testng:LATEST")
val versionResult = system.resolveVrsion(session, VersionRequest(artifact, repositories, null))
println(versionResult)
产生:
6.9.8 @ maven (https://jcenter.bintray.com/, default, releases+snapshots)
但是,6.9.10 是最新的,JCenter 正确报告了它,in the directory 和 maven-metadata.xml
:
<metadata>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
<versioning>
<latest>6.9.10</latest>
<release>6.9.10</release>
为什么我得到的是 6.9.8
而不是 6.9.10
?
有两件事可能会导致您的问题。首先你假设魔法词 LATEST
被 Aether 支持,如果我没记错的话(并且查看 Aether 的代码它是不被支持的)。这意味着您应该使用版本范围来获取最新版本。
此外,如果您有版本范围,则需要调用 resolveVersionRange(...)
而不是 resolveVersion(..)
。
String versionRange = "[0,)";
Artifact artifact =
new DefaultArtifact( "org.testng:testng:jar:" + versionRange );
VersionRangeRequest rangeRequest = new VersionRangeRequest();
rangeRequest.setArtifact( artifact );
rangeRequest.setRepositories( remoteRepos );
VersionRangeResult rangeResult = repository.resolveVersionRange( repositorySystemSession, rangeRequest );
List<Version> versions = rangeResult.getVersions();
above is a slightly modified version taken from a plugin i wrote. There is also a ctor of DefaultArtifact which contains only the appropriate parameters 可能是更好的替代方法,而不是连接字符串。
当我尝试解析 LATEST
版本时,Eclipse Aether 似乎 return 不是正确的版本:
val artifact = DefaultArtifact("org.testng:testng:LATEST")
val versionResult = system.resolveVrsion(session, VersionRequest(artifact, repositories, null))
println(versionResult)
产生:
6.9.8 @ maven (https://jcenter.bintray.com/, default, releases+snapshots)
但是,6.9.10 是最新的,JCenter 正确报告了它,in the directory 和 maven-metadata.xml
:
<metadata>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.10</version>
<versioning>
<latest>6.9.10</latest>
<release>6.9.10</release>
为什么我得到的是 6.9.8
而不是 6.9.10
?
有两件事可能会导致您的问题。首先你假设魔法词 LATEST
被 Aether 支持,如果我没记错的话(并且查看 Aether 的代码它是不被支持的)。这意味着您应该使用版本范围来获取最新版本。
此外,如果您有版本范围,则需要调用 resolveVersionRange(...)
而不是 resolveVersion(..)
。
String versionRange = "[0,)";
Artifact artifact =
new DefaultArtifact( "org.testng:testng:jar:" + versionRange );
VersionRangeRequest rangeRequest = new VersionRangeRequest();
rangeRequest.setArtifact( artifact );
rangeRequest.setRepositories( remoteRepos );
VersionRangeResult rangeResult = repository.resolveVersionRange( repositorySystemSession, rangeRequest );
List<Version> versions = rangeResult.getVersions();
above is a slightly modified version taken from a plugin i wrote. There is also a ctor of DefaultArtifact which contains only the appropriate parameters 可能是更好的替代方法,而不是连接字符串。