Maven私服的安裝和使用。
(注:原創文章,引用請註明來自Clement-Xu的博客!)
Maven私服(即Repository Manager)的主要作用:
- 減少從遠方倉庫下載的次數,節省帶寬、提高maven build的效率
- 減少對遠方倉庫的依賴,確保maven build的穩定性
- 方便內部人員發佈artifact
- 方便存放官方倉庫中沒有的第三方依賴包
安裝和啓動:
2、下載nexus:
wget https://sonatype-download.global.ssl.fastly.net/nexus/3/nexus-3.0.2-02-unix.tar.gz
3、解壓:
tar -zxvf nexus-3.0.2-02-unix.tar.gz
4、創建用戶、賦予權限:
# 使用root權限創建一個用戶
adduser nexus
# 給nexus用戶添加sudo權限
1、給root寫的權限
chmod u+w /etc/sudoers
2、編輯/etc/sudoers,在root下添加nexus用戶權限
vi /etc/sudoers
添加:nexus ALL=(ALL) ALL
3、保存後撤回寫的權限
chmod u-w /etc/sudoers
修改目錄所有者:
chown -R nexus nexus-3.0.2-02
chgrp -R nexus nexus-3.0.2-02
5、註冊爲服務:
ln -s /opt/app/nexus-3.0.2-02 /opt/app/nexus
ln -s /opt/app/nexus/bin/nexus /etc/init.d/nexus
cd /etc/init.d
chkconfig --add nexus
chkconfig --levels 345 nexus on
vi /opt/app/nexus/bin/nexus.rc
添加:run_as_user="nexus"
6、啓動服務:
service nexus start
service nexus status
查看運行的log:
tail -f /opt/app/nexus/data/log/nexus.log
看到“Started Sonatype Nexus OSS 3.0.2-02”表示已經啓動成功。
7、訪問:
Sign In,缺省賬號密碼:admin/admin123
注:倉庫的不同類型:
- proxy:代理第三方倉庫的
- hosted:存儲本地上傳的組建和資源
- group:一般包含多個proxy倉庫和hosted倉庫,在項目中一般引入這種類型的倉庫就可以下載到proxy和hosted中的包
項目中使用:
pom.xml中添加:
<repositories>
<repository>
<id>nexus</id>
<name>Nexus Repository</name>
<url>http://<ip>:8081/repository/maven-public/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>Nexus Plugin Repository</name>
<url>http://<ip>:8081/repository/maven-public/</url>
</pluginRepository>
</pluginRepositories>
上傳第三方包:
準備工作:
1、需要先配置maven中的setting.xml文件:
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
2、創建一個新的repository專門用於存放第三方的jar包:
- admin登錄nexus,Repositories -> Create repository -> maven2 (hosted)
- 填入name:maven-3rd
- 選擇Blob store:default
- 選擇Deployment policy:Allow redeploy
- 點擊:Create repository
3、把新創建的repository加入maven-public group中:
- 進入Repositories -> maven-public
- 在Group中,加入maven-3rd
- 點擊:Save
萬事俱備,可以上傳了:
(假設第三方JAR包:taobao-sdk-java-auto_1455552377940-20160330.jar,存放在本地目錄D:\3rd_jars\中)
mvn deploy:deploy-file ^
-DgroupId=com.aliyun.api ^
-DartifactId=taobao-sdk-java-auto_1455552377940 ^
-Dversion=2016.03.01 ^
-Dpackaging=jar ^
-Dfile=D:\3rd_jars\taobao-sdk-java-auto_1455552377940-20160330.jar ^
-Durl=http://<ip>:8081/repository/maven-3rd/ ^
-DrepositoryId=nexus-releases
注:如果是在linux下運行,需要把連接符“^”替換爲“\”
驗證結果:在Nexus Search中搜索是否已經上傳成功。
上傳成功後,修改pom.xml中的dependency,指向私服:
<dependency>
<groupId>com.aliyun.api</groupId>
<artifactId>taobao-sdk-java-auto_1455552377940</artifactId>
<version>2016.03.01</version>
</dependency>
Deploy jar項目到私服中:
1、pom.xml中的配置:
<distributionManagement>
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://<ip>:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://<ip>:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
注意:
- ID名稱必須要與settings.xml中Servers配置的ID名稱保持一致。
- 項目版本號中有SNAPSHOT標識的,會發布到Nexus Snapshots Repository, 否則發佈到Nexus Release Repository,並根據ID去匹配授權賬號。
2、生成jar包並上傳:
> mvn deploy