2016-08-01 53 views
2

使用版本範圍聲明項目的主POM解析爲最新版本(包含SNAPSHOT)。任何方式使它解決釋放?內部項目如何讓maven獲取發佈父pom而不是最新?

父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快照而不是1.2.0?

+0

你的意思是說你的主pom只適用於多模塊版本或一般的主pom文件?什麼不寫下明確的版本?爲什麼需要一個範圍? – khmarbaise

回答

1

正如你可以看到here,這是一個非常古老的,衆所周知的和爭議的錯誤在我的maven你最好的選擇是不使用版本範圍在你的情況,因爲沒有真正有效的解決方法。

0

因爲你設置了1.3.0-SNAPSHOT是最新的,在這條線(在父POM元數據的XML文件第6行)

<latest>1.3.0-SNAPSHOT</latest> 
+0

那麼如何避免將最新版本設置爲SNAPSHOT?使用mvn deploy添加到maven存儲庫。 –

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等)到你的倉庫。