當(dāng)開發(fā)人員開發(fā)好構(gòu)建,就可以使用Nexus很容易地把構(gòu)建部署到一個宿主倉庫,以方便共享。本文分享三種不同的部署需求:
- 部署發(fā)布版本(release)
- 部署快照版本(snapshot)
- 部署第三方構(gòu)建
要把構(gòu)建(jar包)部署到Nexus,需要在pom文件中定義distributionManagement來提供倉庫URL,然后運行mvn deploy。Maven會執(zhí)行一個HTTP的PUT請求將POM和構(gòu)建推入至你的Nexus。
通常Nexus需要user/password登錄驗證才能上傳部署構(gòu)建。如果沒有權(quán)限,會遇到401 UnAuthorized錯誤。所以第一步是要確定有權(quán)限,可以先用賬號密碼登錄Nexus UI,如果能成功登錄,那么把賬號密碼配置在setting.xml文件中。這在以下任意一個文件中配置即可:
- The Maven install: $M2_HOME/conf/setting.xml
- A user's install: ${user.home}/.m2/setting.xml
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<servers>
<server>
<id>example</id>
<username>username</username>
<password>password</password>
</server>
</servers>
<pluginGroups></pluginGroups>
<proxies></proxies>
<mirrors></mirrors>
<profiles></profiles>
</settings>
1. 部署發(fā)布版本
-
pom.xml文件--配置發(fā)布版本倉庫URL
<project> ... <distributionManagement> ... <repository> <id>releases</id> <name>Internal Release</name> <url>http://maven.example.com/content/repositories/releases/</url> </repository> ... </distributionManagement> ... </project>
當(dāng)前項目的根目錄(pom.xml文件所在目錄)執(zhí)行mvn deploy。
2. 部署快照版本
-
pom.xml文件--配置發(fā)布版本倉庫URL
<project> ... <distributionManagement> ... <repository> <id>Snapshots</id> <name>Internal Snapshots</name> <url>http://maven.example.com/content/repositories/snapshots/</url> </repository> ... </distributionManagement> ... </project>
當(dāng)前項目的根目錄(pom.xml文件所在目錄)執(zhí)行mvn deploy。
3. 部署第三方構(gòu)建
比如有一個第三方構(gòu)建-Oracle JDBC驅(qū)動 需要部署到我們的倉庫中:
<groupId>com.oracle</groupId>
<artifactId>ojdbc14</artifactId>
<version>10.2.0.3.0</version>
- 下載jar包
- 執(zhí)行部署命令:
mvn deploy:deploy-file -DgroupId=com.oracle -DartifactId=ojdbc14
-Dversion=10.2.0.3.0
-Dpackaging=jar
-Dfile=ojdbc.jar
-Durl=http://maven.example.com/content/repositories/thirdparty/
-DrepositoryId=thirdparty - 運行這個mvn deploy:deploy-file之后,該構(gòu)建會被發(fā)布到Nexus的third-party倉庫中。
參考資料
- Maven權(quán)威指南中文版(16.7章節(jié))
- 401 UnAuthorized 解決方法
- 官網(wǎng)參考