如何使用以太API检索maven工件的LATEST(也是SNAPSHOT)版本?

时间:2014-12-11 16:45:38

标签: java maven-3 aether

我使用eclipse.aether(版本1.0.0.v20140518)以编程方式从我的存储库中获取一些maven工件。为此,我使用以下代码:

Artifact artifact = new DefaultArtifact( artifactName );
ArtifactRequest artifactRequest = new ArtifactRequest().setArtifact( artifact );
repositorySystem.resolveArtifact(session, artifactRequest);

其中artifactName是格式为" groupId:artifactId:version"的字符串。当版本是固定版本时(例如" org.myNamespace:myProject:1.0.0")一切正常。此外,我还应该允许用#34; LATEST"替换固定版本。 (如" org.myNamespace:myProject:LATEST")在这种情况下,它应该在我的存储库中加载该工件的最新版本。

这也可以部分工作,这意味着它永远不会检索SNAPSHOTs工件,只会发布。这似乎不符合maven语义,因为它也在这里描述How do I tell Maven to use the latest version of a dependency?

我做错了吗?有没有办法加载最新版本的工件,无论它是版本还是快照?

1 个答案:

答案 0 :(得分:1)

使用开放范围(非LATEST)与resolveVersionRange一起使用。例如:

VersionRangeRequest request = new VersionRangeRequest();
request.setArtifact(new DefaultArtifact("groupId", "artifactId", "jar", "(,]"));
VersionRangeResult result = repositorySystem.resolveVersionRange(session, request);
Version highestVersion = result.getHighestVersion();