Nexus3.x安裝及使用(Docker方式一鍵安裝)
文章目錄
Nexus介紹
Nexus 是Maven倉庫管理器,如果你使用Maven,你可以從Maven中央倉庫 下載所需要的構件(artifact),但這通常不是一個好的做法,你應該在本地架設一個Maven倉庫伺服器,在代理遠端倉庫的同時維護本地倉庫,以節省頻寬和時間,Nexus就可以滿足這樣的需要。此外,他還提供了強大的倉庫管理功能,構件搜尋功能,它基於REST,友好的UI是一個extjs的REST客戶端,它佔用較少的記憶體,基於簡單檔案系統而非資料庫。這些優點使其日趨成為最流行的Maven倉庫管理器。除此之外,Nexus還可以管理Docker映象
通常的做法:本地倉庫沒有,則去中央倉庫下載
搭建私庫的做法:本地倉庫沒有,再去私服下載,私服沒有,再去中央倉庫下載
docker安裝Nexus3.x
安裝docker
在我的另一篇文章有說明,直接使用yum安裝,非常簡單,請移步:
Docker第二篇-Linux和Windows下安裝Docker
安裝Nexus3
準備好一臺虛擬機器,執行以下命令:
#建立宿主機掛載目錄並設定許可權
mkdir -p /usr/local/nexus3/nexus-data
chown -R 200 /usr/local/nexus3/nexus-data
docker run -tid \
--net host \
-p 8081:8081 \
--name nexus \
-e NEXUS_CONTEXT= nexus \
-v /usr/local/nexus3/nexus-data:/nexus-data sonatype/nexus3
net host表示使用主機的網路訪問外網
8081:8081表示宿主機埠和容器埠對映
NEXUS_CONTEXT=nexus表示在訪問Nexus後臺web時,需要帶上nexus進行訪問,如http://ip:8081/nexus
本地若不存在sonatype/nexus3映象,則會去下載,下載完畢後直接啟動
安裝完畢!
登入驗證
訪問web地址:http://ip:8081/nexus
輸入預設賬號密碼:admin/admin123
web介面使用
- Browse可以檢視當前有多少倉庫,搭建好的Nexus,預設會帶有一些maven倉庫,一般使用這些倉庫就足夠了
- 預設倉庫說明
maven-central:maven中央庫,預設從https://repo1.maven.org/maven2/拉取jar
maven-releases:私庫發行版jar,初次安裝請將Deployment policy設定為Allow redeploy
maven-snapshots:私庫快照(除錯版本)jar
maven-public:倉庫分組,把上面三個倉庫組合在一起對外提供服務,在本地maven基礎配置settings.xml或專案pom.xml中使用 - 倉庫型別
Group:這是一個倉庫聚合的概念,使用者倉庫地址選擇Group的地址,即可訪問Group中配置的,用於方便開發人員自己設定的倉庫。maven-public就是一個Group型別的倉庫,內部設定了多個倉庫,訪問順序取決於配置順序,3.x預設Releases,Snapshots,Central,當然你也可以自己設定。
Hosted:私有倉庫,內部專案的釋出倉庫,專門用來儲存我們自己生成的jar檔案
3rd party:未釋出到公網的第三方jar (3.x去除了)
Snapshots:本地專案的快照倉庫
Releases: 本地專案釋出的正式版本
Proxy:代理型別,從遠端中央倉庫中尋找資料的倉庫(可以點選對應的倉庫的Configuration頁簽下Remote Storage屬性的值即被代理的遠端倉庫的路徑),如可配置阿里雲maven倉庫
Central:中央倉庫
Apache Snapshots:Apache專用快照倉庫(3.x去除了) - 要想設定各個倉庫的引數,參考如下
配置阿里雲公共倉庫
Nexus的maven-group的預設查詢方式為:maven-releases --> maven-snapshots --> maven-central,我們在中間再加一個阿里雲倉庫,加快訪問速度。
選擇proxy型別
資訊填寫如下
倉庫名字:隨便填寫
阿里雲遠端maven倉庫地址:http://maven.aliyun.com/nexus/content/groups/public/
其他選項:預設即可
修改maven-public中的倉庫引用及順序:
至此,配置完畢!我們在maven使用maven-public倉庫地址的時候,會按照如下順序訪問:本地倉庫 --> 私服maven-releases --> 私服maven-snapshots --> 遠端阿里雲maven倉庫 --> 遠端中央倉庫。
接下來說明maven如何配置使用私服。
Maven配置使用Nexus
Maven配置私服下載依賴
maven配置私服下載有兩種方式
- setting.xml:該檔案配置的是全域性模式
- pom.xml:該檔案的配置的是專案獨享模式
- 若pom.xml和setting.xml同時配置了,以pom.xml為準
setting.xml檔案配置
這個時候不需要再配置pom.xml檔案,即可使用私服下載jar依賴包
<mirrors>
<mirror>
<!--該映象的唯一識別符號。id用來區分不同的mirror元素。 -->
<id>maven-public</id>
<!--映象名稱 -->
<name>maven-public</name>
<!--*指的是訪問任何倉庫都使用我們的私服-->
<mirrorOf>*</mirrorOf>
<!--該映象的URL。構建系統會優先考慮使用該URL,而非使用預設的伺服器URL。 -->
<url>http://174.12.8.50:8081/nexus/repository/maven-public/</url>
</mirror>
</mirrors>
去工程下載依賴包,發現使用我們自己的私服了
登入Nexus,發現已經有很多jar包了
當然,很有可能你並沒有搭建私服,屬於個人開發,那麼也可以直接配置使用阿里雲maven倉庫
<mirrors>
<mirror>
<!--該映象的唯一識別符號。id用來區分不同的mirror元素。 -->
<id>nexus-aliyun</id>
<!--映象名稱 -->
<name>nexus-aliyun</name>
<!--該映象的URL。構建系統會優先考慮使用該URL,而非使用預設的伺服器URL。 -->
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<!--被映象的伺服器的id。例如,如果我們要設定了一個Maven中央倉庫(http://repo1.maven.org/maven2)的映象,就需要將該元素設定成central。這必須和中央倉庫的id central完全一致。-->
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
pom.xml檔案配置
如果你配置了pom.xml,則以pom.xml為準
<repositories>
<repository>
<id>maven-nexus</id>
<name>maven-nexus</name>
<url>http://174.12.8.50:8081/nexus/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
如果沒有私服,也可以配置阿里雲maven倉庫
<repositories>
<repository>
<id>maven-aliyun</id>
<url>http://maven.aliyun.com/nexus/content/groups/public//</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
<checksumPolicy>fail</checksumPolicy>
</snapshots>
</repository>
</repositories>
Maven配置私服下載外掛
這裡直接說pom.xml的配置,如下:
<pluginRepositories>
<pluginRepository>
<id>maven-nexus</id>
<name>maven-nexus</name>
<url>http://174.12.8.50:8081/nexus/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
Maven配置私服釋出依賴
第一步,修改setting.xml檔案,指定releases和snapshots server的使用者名稱和密碼
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
第二步,在專案的pom.xml檔案中加入distributionManagement節點
注意:repository裡的id需要和第一步裡的server id名稱保持一致
<distributionManagement>
<repository>
<id>releases</id>
<name>Releases</name>
<url>http://174.12.8.50:8081/nexus/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshot</name>
<url>http://174.12.8.50:8081/nexus/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
第三步,執行釋出
mvn deploy
登入Nexus,檢視對應的倉庫已經有相關的依賴包了
注意以下幾點:
- 若專案版本號末尾帶有 -SNAPSHOT,則會發布到snapshots快照版本倉庫
- 若專案版本號末尾帶有 -RELEASES 或什麼都不帶,則會發布到releases正式版本倉庫