4

在我們的Maven項目之一,我們必須依賴於一個共享-POM,它也被用於其他項目,因此不是家長POM的一部分。由於它也在開發中,我們參考SNAPSHOT版本。詹金斯Maven的版本:更換快照依賴

當使用Jenkins創建發行版時,它將使用快照依賴項。但是我們想要的是使用最新版本,或者直接用發佈版本替換快照。

那麼是否有可能在詹金斯取代快照版本?也許同樣的方式,Maven Release插件在手動執行時會執行它(它會提示解決依賴關係)?

回答

2

也許這可能與不硬編碼的版本,但有一個參數(<版本> $ {} dependency.version < /版本>),然後開始構建MVN全新安裝-Ddependecy.version =版本 (在詹金斯你可以參數化構建)。但這僅僅是一個黑客!

在開發過程中發生SNAPSHOT依賴關係是可以的(有時候會很痛苦;-)但是在發佈項目之前,您應該釋放依賴關係。

如果公共項目的開發(當前)與您的項目緊密耦合,那麼您可以考慮讓公共項目像當前項目一樣處於同一發佈週期。

+1

Thx @rotscher!使用版本參數很好。但不是直接傳遞版本,我創建了一個Profile'use-released-commons'。所以當通過'mvn clean install -Puse-released-commons'構建項目時,它會覆蓋版本屬性並將其設置爲發佈版本。 – fischermatte

1

M2 Release plugin是圍繞標準Maven release plugin的詹金斯包裝。

+0

Thx,我知道。我的問題是 - 如何配置Jenkin插件,因此Maven Release插件知道它應該將SNAPSHOT依賴關係解析爲某個發行版本。我在詹金斯沒有命令行,所以沒有提示... – fischermatte

1

我有同樣的問題,並得到了一些里程碑以下解決方案。 在Maven Non-Interactive releases的頁面底部,它使用releases.properties文件來定義版本。

而不是手搖這個文件,我第一次運行Maven的本地使用:

mvn -U release:prepare -DdryRun=true -Dresume=false 

回答所有問題後,它會創建releases.properties文件,你想使用。唯一需要做的是編輯release.properties文件。

在文件的結尾是:

completedPhase=end-release 

更改爲:

completedPhase=check-dependency-snapshots 

見:Maven Release Plugin phases 這將有短路的SCM檢查,修改,但是你的影響在構建服務器上,所以不應該進行本地修改。

我簽入到我們的供應鏈管理這個文件在項目(同一水平POM)的根

在詹金斯,我再對發行這些設置:

--batch-mode release:prepare release:perform 

這似乎是一個有點凌亂給我。我希望有一個更清潔的方式。 [運行:Jenkins 1.533,Jenkins Maven發佈插件插件0.12.0,Maven Integration插件1。533]

3

Versions Maven Plugin提供目標versions:use-latest-releases。您可以在預先步階行家調用之前使用這個目標你你經常構建這樣的:

versions:use-latest-releases -Dincludes=com.yourcompany.yourgroupid:yourartifactid versions:commit scm:checkin

這樣一來,就可以保留快照的依賴,直到神器實際發佈。

+0

或者如果你的屬性使用'versions:update-properties'設置 – Klaus