如何让maven获得释放父pom而不是最新?

时间:2016-08-01 15:51:25

标签: java parent-pom maven

使用版本范围声明项目的主POM解析为最新版本(包含SNAPSHOT)。有什么办法让它决定释放?

项目内的父POM声明:

<parent>
  <groupId>my.company</groupId>
  <artifactId>my-company-pom</artifactId>
  <version>(,2.0.0]</version>
</parent>

父POM元数据文件

<metadata>
  <groupId>my.company</groupId>
  <artifactId>my-company-pom</artifactId>
  <version>1.0.1</version>
  <versioning>
    <latest>1.3.0-SNAPSHOT</latest>
    <release>1.2.0</release>
    <versions>
      <version>1.0.0</version>
      <version>1.0.1-SNAPSHOT</version>
      <version>1.0.1</version>
      <version>1.1.0</version>
      <version>1.2.0</version>
      <version>1.3.0-SNAPSHOT</version>
    </versions>
    <lastUpdated>xxxxxxxxxxxx</lastUpdated>
  </versioning>
</metadata>

为什么Maven将父POM版本解析为1.3.0-SNAPSHOT而不是1.2.0?

3 个答案:

答案 0 :(得分:1)

正如您所看到的here,对于我而言,它是一个非常古老,众所周知且充满争议的错误,因为没有真正有效的解决方法,因此您最好不要在您的情况下使用版本范围。

答案 1 :(得分:0)

因为你设置1.3.0-SNAPSHOT是最新的,在这一行(父pom元数据XML文件中的第6行)

<latest>1.3.0-SNAPSHOT</latest>

答案 2 :(得分:0)

您可以在自定义存储库定义中排除快照版本以解决此问题。

<repositories>
 <repository>
  <id>codehaus</id>
   <name>codehaus</name>
   <releases>
    <enabled>true</enabled>
   </releases>
   <snapshots>
    <enabled>false</enabled>
   </snapshots>
   <url>http://snapshots.maven.codehaus.org/maven2</url>
   <layout>default</layout>
  </repository>
</repositories>

Maven当时没有“看到”快照。当然,您必须调整设置(URL等)到您的仓库。