我使用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?
我做错了吗?有没有办法加载最新版本的工件,无论它是版本还是快照?
答案 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();