2014-08-28 67 views
3

對於我們的項目,我們希望自動更新大部分依賴項,因此我們希望在IVY中使用最新的策略。但是我們不想運行依賴關係的出血邊緣。 alpha和beta版本。帶有常春藤排除Alpha版和beta版的最新穩定版本

使用:

<dependency org="org.apache.httpcomponents" name="httpclient" rev="latest.revision" />

<dependency org="org.apache.httpcomponents" name="httpclient" rev="latest.release" />

我們得到修訂4.4-alpha1

這是可以理解的,因爲我們使用ibiblio上解析其中包含行家以下XML -metadata.xml <metadata> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <versioning> <latest>4.4-alpha1</latest> <release>4.4-alpha1</release> <versions> <version>4.0-alpha1</version> <!-- snip ---> <version>4.3-alpha1</version> <version>4.3-beta1</version> <version>4.3-beta2</version> <version>4.3</version> <version>4.3.1</version> <version>4.3.2</version> <version>4.3.3</version> <version>4.3.4</version> <version>4.3.5</version> <version>4.4-alpha1</version> </versions> <lastUpdated>20140801101402</lastUpdated> </versioning> </metadata>

元數據表示alpha版本同時發佈和最新版本。 (不知道這是actualy相關)

在這種情況下,我們有我們想在元數據列表是4.3.5

現在常春藤得到一個版本有一個結構和但文檔是很稀疏,我不知道如何讓這個策略'忽略'阿爾法釋放。

我試圖(使用rev="latest.test")以下無濟於事的變化: '

編輯: 從org.apache.ivy.plugins.latest.LatestRevisionStrategy源代碼它顯示specialmeanings不會成爲能夠解決這個因爲版本首先分成幾部分,然後逐個部分進行比較。

如果有辦法禁止包含特定字符串的修訂版,我的問題也將被解決。 `

+0

自動更新依賴關係並不一定是個好主意 - 也就是說,如果在構建定義中使用這種自動更新依賴項,那麼構建結果會變得時間相關,這可能會導致一系列問題。 – 2014-09-15 16:04:51

+0

我明白這些風險,但這是我們特別想要的東西(不適用於所有圖書館)。主要原因是自動保持數據並且只是不時迴歸(我們有300個庫保持最新版本) – pvgoddijn 2014-09-16 07:49:27

回答

3

org.apache.ivy.plugins.latest.LatestRevisionStrategy的源代碼表明不可能在latestStrategy元素中使用特殊含義的字符串修復此問題。 (感謝:this post

我們結束了使用版本匹配器來保護常春藤不使用-beta-或-alpha版本。 它不是一個最佳解決方案,正則表達式可能需要更新幾次。

在ivysettings.xml:

<version-matchers usedefaults="true"> 
    <pattern-vm name="lastest.nobeta"> 
     <match revision="latest.nobeta" pattern="\.*\d+\.\d+\.?\d*(FINAL|RELEASE|STABLE)?" matcher="regexp" /> 
    </pattern-vm> 
</version-matchers> 

和的ivy.xml:

<dependency org="org.apache.poi" name="poi" rev="latest.nobeta"/> 

不能完全確定,如果這需要最新版本的,但到目前爲止,這似乎是這樣。

+0

Ivy如何知道它應該採用最新版本?該模式沒有說明任何關於這一點。 – 2017-11-23 12:39:05

+0

不知道ATM(很久以前),但我認爲自定義模式要麼繼承現有的「最新」或級聯(可能是因爲usedefaults = true) – pvgoddijn 2017-11-24 16:00:23