maven 部署nexus_Maven部署到Nexus
maven 部署nexus
1.概述
在上一篇文章中 ,我討論了Maven項目如何在本地安裝尚未部署在Maven Central(或任何其他大型且公共托管的存儲庫)上的第三方jar。 該解決方案僅適用于小型項目,在這些項目中安裝,運行和維護完整的Nexus服務器可能會顯得過大。 但是,隨著項目的發展,Nexus很快成為托管第三方工件以及在開發流中重用內部工件的唯一真正成熟的選擇。 本文將展示如何使用Maven將項目工件部署到Nexus 。
2. pom中的Nexus要求
為了使Maven能夠部署在構建的打包階段中創建的工件,它需要通過distributionManagement元素定義存儲信息,以在其中存儲打包的工件。
托管的公共Snapshots存儲庫在Nexus上是開箱即用的,因此無需進一步創建或配置任何內容。 Nexus使確定其托管存儲庫的URL變得容易-每個存儲庫都顯示要添加到項目pom的<distributionManagement>中“ 摘要”選項卡下的確切條目。
3.插件
默認情況下,Maven通過maven-deploy-plugin處理部署機制-這映射到默認Maven生命周期的部署階段:
<plugin><artifactId>maven-deploy-plugin</artifactId><version>2.7</version><executions><execution><id>default-deploy</id><phase>deploy</phase><goals><goal>deploy</goal></goals></execution></executions> </plugin>maven-deploy-plugin是解決將項目部署到Nexus的任務的可行選擇,但是它并不是為了充分利用Nexus提供的功能而構建的。 因此,Sonatype構建了一個Nexus專用插件-nexus-staging-maven-plugin-該插件實際上旨在充分利用Nexus必須提供的更高級的功能-分期等功能。
盡管對于簡單的部署過程,我們不需要暫存功能,但我們將繼續使用此自定義Nexus插件,因為該插件的創建明確目的是與Nexus良好地溝通。 使用maven-deploy-plugin的唯一原因是在將來保持打開使用Nexus替代產品的選項,例如Artifactory存儲庫。 但是,與在項目的整個生命周期中可能實際更改的其他組件不同,Maven存儲庫管理器極不可能更改,因此不需要靈活性。 因此,在部署階段使用另一個部署插件的第一步是禁用現有的默認映射:
<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>${maven-deploy-plugin.version}</version><configuration><skip>true</skip></configuration> </plugin>現在,我們可以定義:
<plugin><groupId>org.sonatype.plugins</groupId><artifactId>nexus-staging-maven-plugin</artifactId><version>1.3</version><executions><execution><id>default-deploy</id><phase>deploy</phase><goals><goal>deploy</goal></goals></execution></executions><configuration><serverId>nexus</serverId><nexusUrl>http://localhost:8081/nexus/</nexusUrl><skipStaging>true</skipStaging></configuration> </plugin>插件的部署目標映射到Maven構建的部署階段。 還要注意, 如前所述,在將-SNAPSHOT工件簡單部署到Nexus時,我們不需要分段功能,因此可以通過<skipStaging>元素將其完全禁用。
4.全局
部署到Nexus是一項安全的操作 -為此,在任何Nexus實例上都存在開箱即用的部署用戶。 無法使用該部署用戶的憑據來配置Maven,以便它可以與Nexus正確交互,這不能在項目的pom.xml中完成。 這是因為pom的語法不允許這樣做,更不用說pom可能是公共工件的事實,因此不太適合保存憑證信息。
服務器的憑證必須在全局Maven setting.xml中定義:
<servers><server><id>nexus-snapshots</id><username>deployment</username><password>the_pass_for_the_deployment_user</password></server> </servers>還可以讓服務器使用基于密鑰的安全性,而不是原始和純文本憑據。
5.部署過程
執行部署過程很簡單:
mvn clean deploy -Dmaven.test.skip=true在部署作業的上下文中,跳過測試是可以的,因為該作業應該是項目的部署基準線中的最后一個作業。 這種部署管道的一個常見示例是一連串的Jenkins作業,每個作業只有在成功完成后才觸發下一個作業。 因此,管道中的先前作業有責任運行項目中的所有測試套件-到部署作業運行時,所有測試都應該已經通過。
如果只運行一個命令,則可以在部署階段執行之前使測試保持活動狀態以運行:
mvn clean deploy六,結論
這是將Maven工件部署到Nexus的簡單但高效的解決方案。 它也有些怪異-使用nexus-staging-maven-plugin代替默認的maven-deploy-plugin ; 分段功能被禁用等-正是這些選擇使解決方案變得簡單實用。 潛在地激活全部登臺功能可能是將來文章的主題。 最后,我們將在下一篇文章中討論發布過程。
翻譯自: https://www.javacodegeeks.com/2013/05/maven-deploy-to-nexus.html
maven 部署nexus
總結
以上是生活随笔為你收集整理的maven 部署nexus_Maven部署到Nexus的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小米10至尊纪念版是双扬声器吗
- 下一篇: Java命令行界面(第15部分):Jar