我有一個傳統的maven設置,其父項目和一些模塊是什麼子項目。當我做mvn deploy
時,它會按順序(深度優先)爲每個項目運行整個生命週期(包括test
),最高爲deploy
。如果任何項目無法構建,我想避免部署任何子項目。換句話說,我希望整個父項目的deploy
是「全部或全部」。有什麼辦法可以做到這一點?在部署任何模塊之前,讓maven父項目測試所有模塊
6
A
回答
3
如果你的遠程倉庫是Sonatype的的Nexus臨實例,然後臨的Nexus的「轉移」工具將允許原子發佈到存儲庫正確。
如果使用詹金斯,有延遲部署插件,將部署所有的文物作爲生成後(或非常生成後)動作(不介意太多,你使用的倉庫管理器)
最後,我對MRM-Maven的插件@ Codehaus的中期長期目標之一是允許部署的局部分期,這樣你就能夠做到像
mvn mrm:catch-deploy deploy mrm:push-deploy
但那最後一個還沒寫出來!
8
Maven本身不能做到這一點(還)。目前,構建過程會分別運行每個模塊上的所有目標。有計劃地讓目標看大圖但是這可能對Maven 4.
在此同時,您可以使用一個小的shell腳本:
mvn clean install && mvn deploy -DskipTests=true
第一次運行時建立的一切。第二次運行不會太多(所有的代碼已經被編譯,而且長時間的測試會被跳過),所以速度非常快。
我其實更喜歡這種方法,因爲我的腳本還用我公司的緩存替換了現有的distributionManagement
元素。這意味着我可以爲我的公司部署任何項目,而無需對原始POM進行任何更改。下面是該腳本:
#!/bin/bash
if [[ ! -e pom.xml ]]; then
echo "Missing pom.xml" 1>&2
exit 1
fi
sed \
-e '/<distributionManagement>/,/<\/distributionManagement>/d' \
-e '/<\/project/d' \
pom.xml > pom-deploy.xml || exit 1
cat >> pom-deploy.xml <<EOF
<!-- ADDED BY $0 -->
<distributionManagement>
... whatever you need ...
</distributionManagement>
</project>
EOF
mvn -f pom-deploy.xml clean install && \
mvn -f pom-deploy.xml deploy -DskipTests=true && \
rm pom-deploy.xml
exit 0
相關問題
- 1. Maven測試模塊
- 2. 在maven測試版本中爲多模塊maven項目忽略模塊
- 3. 只有在所有模塊都成功構建的情況下,Maven部署多模塊項目
- 4. 單模塊與多模塊maven項目
- 5. 模塊項目上的maven模塊
- 6. 的Maven(多模塊項目) - 模塊
- 7. Maven多模塊項目導入模塊
- 8. 在Maven多模塊項目的測試階段之前啓動Jetty
- 9. 在多模塊maven項目的構建階段之前運行單元測試
- 10. 在多模塊Maven項目中構建所有模塊後,如何運行集成測試?
- 11. 多模塊maven項目未部署可執行文件的依賴模塊Jar
- 12. Maven的:裝配兒童項目(模塊)在多模塊項目
- 13. 將現有項目導入maven多模塊父項目
- 14. 有各種模塊的項目的Maven surefire測試結果
- 15. 如何在svn中配置多模塊maven項目的父模塊
- 16. 用NetBeans Maven項目調試NetBeans模塊
- 17. 是否有Maven插件列出多模塊項目中的所有JUnit測試
- 18. 多模塊maven項目dependencymanagement
- 19. maven m2eclipse多模塊項目
- 20. Maven的多模塊項目
- 21. Eclipse Maven多模塊項目
- 22. 多模塊maven項目
- 23. Maven項目配置模塊
- 24. IntelliJ - 將Java項目/模塊轉換爲Maven項目/模塊
- 25. 如何通過maven測試Jenkins項目下的特定模塊?
- 26. 多模塊項目中的Maven測試依賴項
- 27. maven ::在多模塊項目中只運行單一測試
- 28. 在POM中測試多模塊Maven項目的內容
- 29. 問題 - 遠程熱部署,多模塊Maven項目
- 30. 使用Maven Cargo部署多模塊項目
我正在改變這個接受的答案,因爲我認爲你是正確的建議使用CI服務器而不是maven,這是我要採取的方法。 – Ramon
斯蒂芬,詹金斯插件是指延遲部署? –
不涉及任何特定的插件 –