我们正在使用maven。我想设置基础架构,以便自动构建的工件将转到Nexus存储库。然后他们可以被开发人员使用。
我已经为我们的项目设置了一份Jenkins工作。 我在同一台服务器上安装了Nexus。
在开发者的PC上,我将默认maven设置复制到C:\ Users {user} .m2 \ settings.xml 添加此部分。 参考文献:
Configuring Maven to Use a Single Nexus
<mirror>
<!--This sends everything else to /public -->
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://myserver:8081/nexus/content/groups/public</url>
</mirror>
(我只关注Repository Management with Nexus本书)
我的下一步应该是什么?
詹金斯的工作应该mvn install
吗?
如何为公司工件创建Nexus存储库?
答案 0 :(得分:17)
要将工件部署到Nexus,您需要在pom中加入distributionManagement section。 Nexus附带了已为快照和版本设置的特定存储库。您应该为每个提供正确的路径,以便maven将快照和发布工件部署到正确的存储库。然后,只要您部署工件(通常使用mvn deploy
或使用maven release plugin),工件就会部署在那里。默认情况下,Nexus已启用写入身份验证,因此您需要确保将具有正确凭据的server section添加到将要部署工件的任何人的settings.xml中。 Jenkins可以像任何其他用户一样对待。如果你有它deploy
作为它的构建,那么每个构建将部署到Nexus。还有一个用于部署工件的构建后操作,以防您希望稍后在Jenkins工作中发生工件。
答案 1 :(得分:17)
我不需要对我的项目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>
答案 2 :(得分:12)
更新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
只需要发布类型的存储库。
答案 3 :(得分:1)
如果这是一个Jenkins问题而不是Maven问题,我建议使用内置的Jenkins“部署工件到Maven存储库”大多数情况下的Post build Action。
我认为的优点:
答案 4 :(得分:1)
maven-release-plugin的maven目标参数可用于传递nexus存储库身份验证
-Dusername=<> -Dpassword=<>
使用jenkins项目,maven命令行,用于nexus repo身份验证