Maven发布到Nexus
1.概述
在本系列的上一篇文章中,我們將Maven設(shè)置為Nexus的部署過程 。 在本文中,我們將在項(xiàng)目的pom以及Jenkins作業(yè)中使用Maven配置發(fā)布過程 。
2.
為了使Maven能夠發(fā)布到Nexus Repository Server,我們需要通過distributionManagement元素定義存儲(chǔ)庫信息:
托管的Release Repository在Nexus上是開箱即用的,因此無需顯式創(chuàng)建它。
3. Maven
發(fā)布過程將與項(xiàng)目的源代碼管理進(jìn)行交互–這意味著我們首先需要在pom.xml中定義<scm>元素:
<scm><connection>scm:git:https://github.com/user/project.git</connection><url>http://github.com/user/project</url><developerConnection>scm:git:https://github.com/user/project.git</developerConnection> </scm>或者,使用git協(xié)議:
<scm><connection>scm:git:git@github.com:user/project.git</connection><url>scm:git:git@github.com:user/project.git</url><developerConnection>scm:git:git@github.com:user/project.git</developerConnection> </scm>4.發(fā)布插件
發(fā)布流程使用的標(biāo)準(zhǔn)Maven插件是maven-release-plugin-此插件的配置最少:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-release-plugin</artifactId><version>2.4.1</version><configuration><tagNameFormat>v@{project.version}</tagNameFormat><autoVersionSubmodules>true</autoVersionSubmodules><releaseProfiles>releases</releaseProfiles></configuration> </plugin>這里重要的是,releaseProfiles配置實(shí)際上將強(qiáng)制Maven的輪廓-在釋放配置文件-在釋放過程變得活躍。
在此過程中,使用nexus-staging-maven-plugin進(jìn)行部署到nexus-releases Nexus存儲(chǔ)庫:
<profiles><profile><id>releases</id><build><plugins><plugin><groupId>org.sonatype.plugins</groupId><artifactId>nexus-staging-maven-plugin</artifactId><version>1.4.4</version><executions><execution><id>default-deploy</id><phase>deploy</phase><goals><goal>deploy</goal></goals></execution></executions><configuration><serverId>nexus-releases</serverId><nexusUrl>http://localhost:8081/nexus/</nexusUrl><skipStaging>true</skipStaging></configuration></plugin></plugins></build></profile> </profiles>該插件被配置為在沒有部署機(jī)制的情況下執(zhí)行與之前相同的Release流程,用于Deployment流程( skipStaging = true )。
而且與部署過程類似,“ 釋放到Nexus”是一項(xiàng)安全的操作 -因此,我們將再次使用Nexus的“開箱即用” 部署用戶。
我們還需要在全局settings.xml ( %USER_HOME%/。m2 / settings.xml )中為nexus-releases服務(wù)器配置憑據(jù):
<servers><server><id>nexus-releases</id><username>deployment</username><password>the_pass_for_the_deployment_user</password></server> </servers>這是完整的配置
5.發(fā)布過程
讓我們將發(fā)布過程分為幾個(gè)小步驟和重點(diǎn)突出的步驟。 當(dāng)項(xiàng)目的當(dāng)前版本為SNAPSHOT版本(例如0.1-SNAPSHOT)時(shí),我們正在執(zhí)行發(fā)布。
5.1。 釋放:干凈
清潔發(fā)行版將:
- 刪除發(fā)布描述符( release.properties )
- 刪除所有備份POM文件
5.2。 發(fā)布:準(zhǔn)備
發(fā)布過程的下一部分是準(zhǔn)備發(fā)布 ; 這將:
- 執(zhí)行一些檢查–不應(yīng)有未提交的更改,項(xiàng)目應(yīng)不依賴于SNAPSHOT依賴項(xiàng)
- 將pom文件中的項(xiàng)目版本更改為完整發(fā)行版號(刪除SNAPSHOT后綴)–在我們的示例中– 0.1
- 運(yùn)行項(xiàng)目測試套件
- 提交并推送更改
- 根據(jù)此非SNAPSHOT版本代碼創(chuàng)建標(biāo)簽
- 在pom中增加項(xiàng)目的版本 -在我們的示例中-0.2-SNAPSHOT
- 提交并推送更改
5.3。 發(fā)布:執(zhí)行
發(fā)布過程的后半部分是執(zhí)行發(fā)布 ; 這將:
- 來自SCM的結(jié)帳發(fā)布標(biāo)簽
- 構(gòu)建和部署發(fā)布的代碼
該過程的第二步取決于Prepare步驟的輸出– release.properties 。
6.關(guān)于詹金斯
Jenkins可以通過以下兩種方式之一執(zhí)行發(fā)布過程-它可以使用其自己的發(fā)布插件,也可以僅使用標(biāo)準(zhǔn)的maven作業(yè)運(yùn)行正確的發(fā)布步驟來執(zhí)行發(fā)布。
專注于發(fā)布過程的現(xiàn)有Jenkins插件為:
- 發(fā)布插件
- M2發(fā)布插件
但是,由于執(zhí)行發(fā)布的Maven命令非常簡單,因此我們只需定義一個(gè)標(biāo)準(zhǔn)的Jenkins作業(yè)即可執(zhí)行該操作-無需插件。
因此,對于一個(gè)新的Jenkins作業(yè)(構(gòu)建一個(gè)maven2 / 3項(xiàng)目)–我們將定義2個(gè)String參數(shù): releaseVersion = 0.1和developmentVersion = 0.2-SNAPSHOT 。
在“ 構(gòu)建配置”部分,我們只需配置以下Maven命令即可運(yùn)行:
release:clean release:prepare release:perform -DreleaseVersion=${releaseVersion} -DdevelopmentVersion=${developmentVersion}運(yùn)行參數(shù)化作業(yè)時(shí),Jenkins將提示用戶為這些參數(shù)指定值-因此,每次運(yùn)行作業(yè)時(shí),我們都需要為releaseVersion和developmentVersion填寫正確的值。
另外,值得使用Workspace Cleanup插件并選中此構(gòu)建的“ 在構(gòu)建開始之前刪除工作區(qū)”選項(xiàng)。 但是請記住,發(fā)行版的執(zhí)行步驟必須由與prepare相同的命令運(yùn)行 步驟–這是因?yàn)楹竺娴?strong>執(zhí)行步驟將使用prepare準(zhǔn)備創(chuàng)建的release.properties文件。 這意味著我們不能讓Jenkins Job運(yùn)行準(zhǔn)備和另一個(gè)運(yùn)行的Perform 。
7.結(jié)論
本文介紹了如何在有或沒有Jenkins的情況下發(fā)布Maven項(xiàng)目的過程。 與Deployment類似,此過程使用nexus-staging-maven-plugin與Nexus進(jìn)行交互,并專注于git項(xiàng)目。
翻譯自: https://www.javacodegeeks.com/2013/05/maven-release-to-nexus.html
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Maven发布到Nexus的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安全性中的Spring AOP –通过方
- 下一篇: Maven的春天