2017-07-21 74 views
-1

我喜歡建立:1.0.0-9,1.0.0-10,1.0.0-11,1.0.0-12等Maven的版本控制配置

我已經配置了我的依賴像: [1.0.0)

這意味着它應該使用來自現有的最新版本(OFC與1.0.0開始),但不是使用它使用的1.0.0-12 1.0.0-9。我認爲這是因爲9是磨碎的,然後是1.

首先,我想迫使maven真正使用我最新的版本。

我也可以有1.0.0-LOCAL build(這是在開發人員的PC上建立的本地版本)。如果可用,我想強制maven使用1.0.0-LOCAL而不是其他任何版本。

我不知道我是如何做到這些的,也許不知怎的,settings.xml配置文件位於生成機器和開發人員的PC上。

如果我有任何其他方式來做到這一點,請讓我知道。

有一個好的一天, 阿諾德·羅伯特Turdean

更新: 原來的Maven Version Range - downloads all the available versions not just the latest one是原來的問題。

回答

1

你使用哪個maven版本?從Maven的角度來看,所有這些版本都是發行版?問題是如果使用SNAPSHOT版本會更好嗎?

此外,檢查您的工件的順序是正確的或工作像你期望這可以通過使用此檢查:由Maven的解析(規範形式)

java -jar apache-maven-3.3.9\lib\maven-artifact-3.3.9.jar 1.0.0-12 1.0.0-9 

顯示參數和比較結果:

1. 1.0.0-12 == 1-12 
    1.0.0-12 > 1.0.0-9 
2. 1.0.0-9 == 1-9 

其正確地顯示,1.0.0-121.0.0-9更大。所以問題是,如果你正在使用庫管理器等?你只做一個mvn install

我不明白的是你對'1.0.0-LOCAL'的陳述?

除此之外,我會建議,以防止使用的版本範圍,因爲他們讓你建立非重複性。

+0

是否有合理的完整和最近的文檔解釋版本號的排序?直到今天,我認爲只有前3個數字(major.minor.bugfix)在語義上是有序的,其餘的是按字母順序排列的。 –

+1

從Maven 3開始,它已被更改。請參閱https://maven.apache.org/ref/3.0.3/maven-artifact/apidocs/org/apache/maven/artifact/versioning/ComparableVersion.html此外http://blog.soebes.de/blog/2017/02/04/apache-maven-how-version-comparison-works /但是這個提示提醒我將它集成到官方的Maven站點中... – khmarbaise

+0

謝謝你,你幫我弄清楚不是版本號是問題,但另一個maven行爲(https://stackoverflow.com/questions/45261222/maven-version-range-downloads-all-the-available-versions-not-just-the-latest-) –

-1

在maven中,依賴關係層次結構非常重要。確保你之前沒有添加其他依賴項,並將其添加到其他的pom中。

(在層次結構中,maven關心最新的依賴項)。依賴關係1.0.0-LOCAL必須是最新的。

我向你推薦,而本地開發時間使用通用-SNAPSHOT,在開始打包時使用數字。

+0

Maven並不關心最新的依賴關係(取決於你的版本範圍如何使用它們),它將選擇最近的依賴關係,並且該版本將被採用......特別是如果您考慮具有多個依賴關係樹水平... – khmarbaise