如何通过Maven Nexus REST api获得最高版本的工件?

时间:2012-06-01 08:58:40

标签: maven nexus maven-metadata

我虽然可以使用 /nexus/service/local/artifact/maven/resolve?r=releases&g=com.mycompany&a=myArtifact&v=LATEST

然后我读到了the difference between LATEST and RELEASE

在Maven 3中,LATEST不再填充 - 确定 但是RELEASE只给了我最新发布的版本!
那么如何获取最高版本的工件呢? 我需要一些东西,它返回版本 2.1.3
任何线索?

这是来自Nexus的我的maven-metadata.xml:

<metadata>
  <groupId>com.mycompany</groupId>
  <artifactId>myartifact</artifactId>
  <versioning>
    <latest>1.0.4</latest>
    <release>2.0.5</release>
    <versions>
      <version>1.0.0</version>
      <version>1.0.1</version>
      <version>1.0.2</version>
      <version>1.0.4</version>
      <version>1.0.5</version>
      <version>1.0.6</version>
      <version>1.0.7</version>
      <version>2.0.0</version>
      <version>2.0.1</version>
      <version>2.0.2</version>
      <version>2.0.3</version>
      <version>2.0.4</version>
      <version>2.1.0</version>
      <version>2.1.1</version>
      <version>2.1.2</version>
      <version>2.1.3</version> <!-- released week ago -->
      <version>2.0.5</version> <!-- released today -->
    </versions>
    <lastUpdated>20120531131959</lastUpdated>
  </versioning>
</metadata>

1 个答案:

答案 0 :(得分:0)

使用DefaultArtifactVersion中的代码从您可以使用compareTo()排序的字符串创建版本实例。

代码在工件中

<dependency>
  <groupId>org.apache.maven</groupId>
  <artifactId>maven-artifact</artifactId>
  <version>3.0</version>
</dependency>

请注意,这并不总是有效。例如,commons-lang:commons-lang的版本20030203.000129比最新的2.6旧,但排序更高。