【问题标题】:How to retrieve the LATEST (also SNAPSHOT) version of a maven artifact using aether API? [duplicate]如何使用以太 API 检索 Maven 工件的最新(也是 SNAPSHOT)版本? [复制]
【发布时间】:2014-12-11 16:45:37
【问题描述】:

我正在使用 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”)一切正常。此外,我还应该被允许用“LATEST”替换固定版本(如“org.myNamespace:myProject:LATEST”),在这种情况下,它应该在我的存储库中加载该工件的最新版本。

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

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

【问题讨论】:

  • 只需使用1.0.0-SNAPSHOT 而不是LATEST
  • 这不起作用。如果有人部署 1.1.0-SNAPSHOT 会发生什么?

标签: java maven-3 aether


【解决方案1】:

使用开放范围(不是最新的)适用于resolveVersionRange。例如:

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

【讨论】:

  • 如何处理这个highestVersion
  • 我写这篇文章已经有一年了,但我认为highestVersion 将为您提供工件的最新版本(无论它是发布版还是SNAPSHOT)。所以这就是提问者想要的。
  • 是否可以使用 CD-001CD-002CD-003 等版本解析工件?
  • 我认为这可行,是的。如果你有这样的神器,何不试试呢?
  • 是的,它有效,但我需要使用这个版本进行搜索:"(,]"
猜你喜欢
  • 2016-07-24
  • 1970-01-01
  • 1970-01-01
  • 2013-11-12
  • 2012-08-26
  • 1970-01-01
  • 2014-11-10
  • 2011-12-04
  • 1970-01-01
相关资源
最近更新 更多