[英]Infrastructure with maven, Jenkins, Nexus
我們正在使用maven。 我想設置基礎架構,以便自動構建的工件將轉到Nexus存儲庫。 然后他們可以被開發人員使用。
我已經為我們的項目設置了一份Jenkins工作。 我在同一台服務器上安裝了Nexus。
在開發人員的PC上,我將默認maven設置復制到添加此部分的C:\\ Users {user} .m2 \\ settings.xml。 參考文獻:
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://myserver:8081/nexus/content/groups/public</url>
</mirror>
(我只是通過Nexus書來關注Repository Management )
我的下一步應該是什么? 詹金斯的工作應該mvn install
嗎? 如何為公司工件創建Nexus存儲庫?
我不需要對我的項目pom.xml進行任何更改。 相反,在jenkins“Post-build Actions”中,我選擇了“將工件部署到Maven存儲庫”,然后選擇“Advanced”並將存儲庫URL設置為http://nexusserver:8081/nexus/content/repositories/releases
和存儲庫ID到deploymentRepo
。
在jenkins機器上的~/.m2/settings.xml
我添加了
<settings>
<servers>
<server>
<id>deploymentRepo</id>
<username>deployment</username>
<password>deployment123</password>
</server>
</servers>
...
</settings>
要將工件部署到Nexus,您需要在pom中包含distributionManagement部分 。 Nexus附帶了已為快照和版本設置的特定存儲庫。 您應該為每個提供正確的路徑,以便maven將快照和發布工件部署到正確的存儲庫。 然后,每當您部署工件時 - 通常使用mvn deploy
或使用maven發布插件 ,工件將在那里部署。 Nexus默認啟用了寫入身份驗證,因此您需要確保將具有正確憑據的服務器部分添加到將要部署工件的任何人的settings.xml中。 Jenkins可以像任何其他用戶一樣對待。 如果你有它的deploy
作為其構建,那么每個構建將部署到Nexus。 還有一個用於部署工件的構建后操作,以防您希望稍后在Jenkins作業中發生。
更新pom.xml
<distributionManagement>
...
<repository>
<id>deploymentRepo</id>
<name>Internal Releases</name>
<url>http://nexusserver:8081/nexus/content/repositories/releases</url>
</repository>
...
</distributionManagement>
然后為maven ~/.m2/settings.xml
添加(這是Nexus中的默認部署用戶)
<server>
<id>deploymentRepo</id>
<username>deployment</username>
<password>deployment123</password>
</server>
然后mvn deploy
然后可以在任何項目中使用已部署的工件,就像標准工件一樣。 在這種情況下添加到pom.xml
<!-- company repositories -->
<repository>
<id>deploymentRepoReleases</id>
<name>Releases (Nexus)</name>
<url>http://nexusserver:8081/nexus/content/repositories/releases/</url>
</repository>
<repository>
<id>deploymentRepoSnapshots</id>
<name>Snapshots (Nexus)</name>
<url>http://nexusserver:8081/nexus/content/repositories/snapshots/</url>
</repository>
更新:后來我們離開了Snapshot存儲庫並使用了maven-release-plugin
,它只需要發布類型的存儲庫。
如果這是一個Jenkins問題而不是Maven問題,我建議使用內置的Jenkins“部署工件到Maven存儲庫”大多數情況下的Post build Action。
我認為的優點:
maven-release-plugin的maven目標參數可用於傳遞nexus存儲庫身份驗證
-Dusername=<> -Dpassword=<>
與jenkins項目,maven命令行一起使用,用於nexus repo身份驗證
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.