我们正在使用maven . 我想设置基础架构,以便自动构建的工件将转到Nexus存储库 . 然后他们可以被开发人员使用 .
我已经为我们的项目设置了一份Jenkins工作 . 我在同一台服务器上安装了Nexus .
在开发人员的PC上,我将默认maven设置复制到添加此部分的C:\ Users .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存储库?
5 回答
要将工件部署到Nexus,您需要在pom中包含distributionManagement section . Nexus附带了已为快照和版本设置的特定存储库 . 您应该为每个提供正确的路径,以便maven将快照和发布工件部署到正确的存储库 . 然后,只要您部署工件(通常使用
mvn deploy
或使用maven release plugin),工件就会部署在那里 . 默认情况下,Nexus已启用写入身份验证,因此您需要确保将具有正确凭据的server section添加到将部署工件的任何人的settings.xml中 . Jenkins可以像任何其他用户一样对待 . 如果你有一个deploy
作为它的构建,那么每个构建都将部署到Nexus . 还有一个用于部署工件的构建后操作,以防您希望稍后在Jenkins作业中发生 .我不需要对我的项目pom.xml进行任何更改 . 相反,在jenkins "Post-build Actions"中我选择了"Deploy artifacts to Maven repository"然后选择"Advanced"并将存储库URL设置为
http://nexusserver:8081/nexus/content/repositories/releases
,将存储库ID设置为deploymentRepo
.在jenkins机器上的
~/.m2/settings.xml
我添加了更新
pom.xml
然后为maven
~/.m2/settings.xml
add(这是Nexus中的默认部署用户)那么
mvn deploy
然后可以在任何项目中使用已部署的工件,就像标准工件一样 . 在这种情况下添加到pom.xml
更新:稍后我们离开了Snapshot存储库并使用了只需要发布类型的存储库的
maven-release-plugin
.如果这是一个Jenkins问题而不是Maven问题,我建议使用内置的Jenkins“部署工件到Maven存储库”大多数情况下的Post build Action .
我认为的优点:
更可移植(我们在生命周期的不同阶段使用不同的存储库),每个Jenkins实例都知道它自己的存储库
对于阅读詹金斯工作的人来说更加明显
更符合詹金斯的做事方式
maven-release-plugin的maven目标参数可用于传递nexus存储库身份验证
与jenkins项目,maven命令行一起使用,用于nexus repo身份验证