2016-01-29 28 views
1

我有一個Jenkins作業,它構建了一個簡單的Maven項目。如果我所做的只是構建,它就可以工作。當我嘗試釋放,空轉或正常時,問題就出現了。它始終因Cannot prepare the release because you have local modifications錯誤而失敗。我已經消除了工作區,但問題依然存在。有什麼方法可以讓Maven告訴我哪個文件它認爲已被修改?我會假設通過清除本地工作區並立即運行幹運行版本,以便不會有任何修改的機會。獲取Maven報告哪些文件具有本地修改

請注意,我做而不是有權訪問Jenkins服務器或正在運行實際發佈版本的從站,因此我無法使用任何工具(如SVN)來確定假定修改的內容。

回答

0

原來我的問題的解決方案是在Jenkins作業配置中對我的私有Maven存儲庫不使用「本地到工作區」策略。通過將其改爲「本地執行者」策略,問題就消失了。我仍然不確定它爲什麼會在工作區出現問題,但是這個解決方案解決了它的問題,並且可能適用於其他人。

0

您可以使用Maven SCM插件進行差異化。

https://maven.apache.org/scm/maven-scm-plugin/diff-mojo.html

基本上,整合了Maven插件故障的上游,並查看是否有已經改變。我想你可能能夠看到日誌中的輸出,但如果你不能,你可以將你的「真正的」maven pom.xml放在一邊,用一個生成diff文件的文件替換它,並且在maven構建幫助程序插件,將該文件作爲附加參數(對pom目標)。

+0

記住釋放插件做了一些變化,如果你面對的不應該是(像.class文件檢查),你可能會花一些時間來告訴你SCM快要忘記在版本控制項目版本化各種文件。 –

+0

感謝您的鏈接。我如何去整合它?我現在所做的就是在Jenkins的項目中點擊「Perform Maven Release」鏈接。據我所知,運行「mvn -Dresume = false -DdryRun = true release:prepare」。我怎樣才能獲得差異釋放已下載的一切之後,但它之前自身的比較? – cneff

相關問題