準備工作:
- jdk 1.8
- nexus-3.9.0-01-unix.tar.gz(可以到官網上去下載最新版本的)
- 客戶端安裝了maven(注意下方的settings.xml是配置在本地的maven,不是服務器上的,下圖中我是直接放到了服務器中)
上傳並解壓安裝包到/usr/local/java
修改配置
可以在nexus-default.properties文件中(位於/usr/local/java/nexus3.9.0/etc目錄下)修改WEB訪問端口等信息,默認爲8081端口;(不做修改,查看一下)
防火牆放行8081端口;
查看防火牆狀態 :firewall-cmd --state
關閉防火牆:systemctl stop firewalld.service
編輯 nexus 腳本, 配置 RUN_AS_USER 參數
run_as_user='' 改爲: RUN_AS_USER='root'
啓動 nexus
執行: cd nexus3.9.0/bin,進入到bin目錄,執行:./nexus start
打開瀏覽器,訪問:http://ip地址:8081/
默認用戶名 admin 默認密碼 admin123
到此,Nexus 安裝完成。
接下來配置Nexus
配置Nexus之前,需要先了解一下私服的工作原理,如下圖:
找依賴包的流程: 首先在本地倉庫中找,如果沒命中,那麼就找遠程私服;遠程私服的查找規則同樣是先找host屬性的私有庫,然後再去找proxy屬性的遠程倉庫;可以配置多個proxy;
Nexus倉庫類型介紹
默認安裝有以下這幾個倉庫,在控制檯也可以修改遠程倉庫的地址,第三方倉庫等。
- hosted(宿主倉庫庫) :存放本公司開發的jar包(正式版本、測試版本)
- proxy(代理倉庫):代理中央倉庫、Apache下測試版本的jar包
- group(組倉庫):使用時連接組倉庫,包含Hosted(宿主倉庫)和Proxy(代理倉庫)
Hosted 倉庫常用類型說明:
- releases 內部的模塊中 release 模塊的發佈倉庫
- snapshots 發佈內部的 SNAPSHOT 模塊的倉庫
- 3rd party 第三方依賴的倉庫,這個數據通常是由內部人員自行下載之後發佈上去
新建代理maven倉庫地址是阿里雲
jcenter | http://jcenter.bintray.com/ |
最後建立組倉庫maven-public(添加aliyun_maven到maven-public),如下。
組倉庫中包含了aliyun_maven、maven-central、本地maven-releases,本地maven-snapshots。
至此,Nexus基本就這麼配置好了,主要在Group組中配置一個代理私服。
配置下載依賴 setting.xml
添加maven倉庫鏡像
創建好組倉庫之後,修改setting.xml文件,添加maven倉庫鏡像,如下:
進入/usr/local/java/maven3.6.3/conf下修改setting.xml:
<mirror>
<id>nexus-myself</id>
<!--*指的是訪問任何倉庫都使用我們的私服-->
<mirrorOf>*</mirrorOf>
<name>Nexus myself</name>
<url>http://192.168.200.16:8081/repository/maven-public/</url>
</mirror>
全局配置下載依賴(即項目pom無需配置)
在maven的setting.xml文件中配置私服配置,這種方式配置後所有本地使用該配置的maven項目的pom文件都無需配置私服下載相關配置。
<profiles>
<profile>
<id>mycof</id>
<repositories>
<!-- 私有庫地址-->
<repository>
<id>nexus</id>
<url>http://192.168.200.16:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!--插件庫地址-->
<pluginRepository>
<id>nexus</id>
<url>http://192.168.200.16:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
激活使用上面的配置
<!--激活profile-->
<activeProfiles>
<activeProfile>mycof</activeProfile>
</activeProfiles>
本地maven開發的項目上傳配置
1.maven的setting文件配置
這裏要配置配置上傳用戶及倉庫信息,我這裏直接使用了admin用戶,在nenus2.x中還內置了一個deployment/deployment123用戶,在3.x該用戶被移除了,這裏可以自己配置角色和用戶,我就直接使用admin用戶了
<servers>
<server>
<id>maven-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>maven-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
單獨項目下載依賴(即項目pom文件中配置)
這種配置是修改單個項目的pom文件,無需修改maven的setting配置
<repositories>
<repository>
<id>nexus</id>
<url>http://192.168.200.16:8081/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>maven-releases</id>
<name>Nexus Release Repository</name>
<url>http://192.168.200.16:8081/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>maven-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://192.168.200.16:8081/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
建議使用全局的setting配置,一個項目組共用一個maven的setting配置,項目中就無需配置下載相關的私服倉庫配置
上傳jar包配置(已在上述配置中設置)
對於中央倉庫沒有的jar包,需要我們自己將jar包發佈到私服中去,其中jar包主要分爲兩類,
一類是本地自己開發供給項目組其餘同事使用,這種直接配置項目的pom文件和maven的setting文件,之後deploy發佈即可發佈到;
另一類是第三方jar包,可以直接使用web頁面上傳並設置對應GAV即可;
出現uploading信息並且沒報錯說明上傳成功。
在此過程中,不能使用maven的地址,連接超時,使用阿里雲的即可
然後到對應的倉庫中查看
注意:
-
這裏只有Snapshot的倉庫上傳成功,Release倉庫並沒有上傳成功,這是因爲版本號名稱結尾有SNAPSHOT,默認以這個結尾是不會上傳到Release倉庫去的,去除就會上傳到Release倉庫且不會上傳到快照倉庫
-
Release倉庫默認不支持重複發佈,可配置
-
注意setting中server標籤下的id要和pom文件中倉庫配置的id相同,即指定上傳到哪個倉庫
第三方jar包上傳
對於第三方jar包的上傳採用nenus提供的web界面上傳,上傳成功後需要使用該jar包的話,依賴中填寫自定義的GAV即可