繁体   English   中英

Eclipse Aether无法正确解析“LATEST”

[英]Eclipse Aether not resolving `LATEST` correctly

当我尝试解析LATEST版本时,Eclipse Aether似乎没有返回正确的版本:

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正在报告它,无论是在目录中还是在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

有两件事可能导致您的问题。 首先你假设Aether支持神奇的词LATEST ,如果我没记错的话(并且查看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();

以上是从我写的插件中略微修改的版本 还有一个DefaultArtifactctor,它只包含适当的参数 ,这可能是一个更好的替代方法,而不是连接字符串。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM