Nexus安裝,配置,使用
1 . 私服簡介
私服是架設在局域網的一種特殊的遠程倉庫,目的是代理遠程倉庫及部署第三方構件。有了私服之后,當 Maven 需要下載構件時,直接請求私服,私服上存在則下載到本地倉庫;否則,私服請求外部的遠程倉庫,將構件下載到私服,再提供給本地倉庫下載。
我們可以使用專門的 Maven 倉庫管理軟件來搭建私服,比如:Apache Archiva,Artifactory,Sonatype Nexus。這里我們使用 Sonatype Nexus。
2 . 安裝Nexus
2.1 下載Nexus
Nexus 專業版是需要付費的,這里我們下載開源版 Nexus OSS。Nexus 提供兩種安裝包,一種是包含 Jetty 容器的 bundle 包,另一種是不包含容器的 war 包。下載地址:https://help.sonatype.com/display/NXRM2/Download+Archives+-+Repository+Manager+OSS
2.2 安裝nexus
添加用戶:
groupadd nexus useradd -d /home/nexus -g nexus nexus |
下載好以后,使用如下命令對nexus-2.14.15-01-bundle.tar.gz進行解壓
tar –zxvf nexus-2.14.15-01-bundle.tar.gz
解壓完以后會得到兩個目錄:nexus-2.14.15-01 和 sonatype-work,一個放的是nexus程序,一個放的是倉庫類信息。
nexus-2.14.15-01目錄下存放着如下目錄
![]()
|
Bin:可執行文件
Lib:庫文件
配置nexus
# Jetty section application-port=8081 application-host=0.0.0.0 nexus-webapp=${bundleBasedir}/nexus nexus-webapp-context-path=/nexus
# Nexus section nexus-work=${bundleBasedir}/../sonatype-work/nexus runtime=${bundleBasedir}/nexus/WEB-INF
# orientdb buffer size in megabytes storage.diskCache.bufferSize=4096 |
啟動nexus,在啟動前確保java環境以及安裝好了。
![]()
|
啟動nexus:
到bin目錄下:./nexus start
訪問nexus
在瀏覽器進行訪問。地址:http://ip:端口/nexus
3配置nexus
Nexus常用功能就是:指定私服的中央地址、將自己的Maven項目指定到私服地址、從私服下載中央庫的項目索引、從私服倉庫下載依賴組件、將第三方項目jar上傳到私服供其他項目組使用。
開啟Nexus服務后訪問url地址http://localhost:8081/nexus/(推薦使用自己的ip地址),之后登錄系統,用戶名密碼分別是:admin/admin123.
最頻繁的就是點擊左側菜單欄的Repositories按鈕
一般用到的倉庫種類是hosted、proxy。Hosted代表宿主倉庫,用來發布一些第三方不允許的組件,比如Oracle驅動、比如商業軟件jar包。Proxy代表代理遠程的倉庫,最典型的就是Maven官方中央倉庫、JBoss倉庫等等。如果構建的Maven項目本地倉庫沒有依賴包,那么就會去這個代理站點去下載,那么如果代理站點也沒有此依賴包,就回去遠程中央倉庫下載依賴,這些中央倉庫就是proxy。代理站點下載成功后再下載至本機。筆者認為,其實Maven這個自帶的默認倉庫一般情況下已經夠大多數項目使用了。特殊情況時在配置新的倉庫,指定url即可,一般熟悉ExtJS的人操作這個Nexus都沒什么問題,單詞不是很難,不明白的查查單詞基本差不多。就是如果Sonatype公司對其做了國際化的處理就更好了。
(1)hosted 類型的倉庫,內部項目的發布倉庫
(2)releases內部的模塊中release模塊的發布倉庫
(3)snapshots發布內部的SNAPSHOT模塊的倉庫
(4)3rd party第三方依賴的倉庫,這個數據通常是由內部人員自行下載之后發布上去
(5)proxy 類型的倉庫,從遠程中央倉庫中尋找數據的倉庫
(6)group 類型的倉庫,組倉庫用來方便我們開發人員進行設置的倉庫
maven項目索引
下載Maven項目索引,項目索引是為了使用者能夠在私服站點查找依賴使用的功能
保存后后台會運行一個任務,點擊菜單欄的Scheduled Tasks選項即可看到有個任務在RUNNING。 下載完成后,Maven索引就可以使用了,在搜索欄輸入要搜索的項,就可以查到相關的信息。例如spring-core
就可以檢索出它的相關信息,包括怎么配置依賴信息。我們要想使用這個私服倉庫,先在項目pom中配置相關私服信息指定倉庫。
<repositories> <repository> <id>nexus</id> <name>nexus</name> <url>http://192.168.0.166:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories> |
指定插件倉庫:
<pluginRepositories> <pluginRepository> <id>nexus</id> <name>nexus</name> <url>http://192.168.0.166:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories> |
這樣只有本項目才在私服下載組件
這樣這個Maven項目構建的時候會從私服下載相關依賴。當然這個配置僅僅是在此項目中生效,對於其他項目還是不起作用。如果相對Maven的其他項目也生效的話。需要修改全局的settings.xml文件。
<profile> <id>nexusProfile</id> <repositories> <repository> <id>nexus</id> <name>Nexus Repository</name> <url>http://192.168.0.166:8081/nexus/content/groups/public/</url> <layout>default</layout> <releases> <enabled>true</enabled> </releases> <snapshotPolicy>always</snapshotPolicy> </repository> </repositories> </profile> |
追加激活profile:
<activeProfiles> <activeProfile>central</activeProfile> </activeProfiles> |
之后所有本機的Maven項目就在私服下載組件。(這樣比較好)
項目的發布,在項目的pom文件中添加如下配置:
<distributionManagement> <repository> <id>user-release</id> <name>User Project Release</name> <url>http://192.168.0.166:8081/nexus/content/repositories/releases/</url> </repository> <snapshotRepository> <id>user-snapshots</id> <name>User Project SNAPSHOTS</name> <url>http://192.168.0.166:8081/nexus/content/repositories/snapshots/</url> </snapshotRepository> </distributionManagement> |
注意配置了還是發布項目到私服失敗,原因為沒有權限
配置權限在settings.xml
<server> <id>user-snapshots</id> <username>deployment</username> <password>deployment123</password> </server> <server> <id>user-release</id> <username>deployment</username> <password>deployment123</password> </server> |
然后運行發布
clean deploy
在控制台發布成功
然后進入到私服上的倉庫中,看一下確實存在剛剛發布的項目
宿主庫——3rd party
假如我們下載了Oracle的驅動程序jar包想給其他項目組使用,就需要上傳該jar包。選中宿主庫——3rd party,之后選擇Artifact Upload上傳至宿主空間。
最后點擊上傳
3.1索引更新
(1) 在線更新索引
安裝配置完成Nexus后,電腦聯網狀態下,Nexus會自動下載索引文件。下載好的索引文件存放在目錄:sonatype-work\nexus\indexer
(2) 手動更新索引
網絡環境不佳,或者在線更新有問題時,可以選擇手動添加索引方式。
到http://repo.maven.apache.org/maven2/.index/上下載:
到http://search.maven.org下載特定解壓文indexer-cli-5.1.1.jar
把這幾個文件放在同一個文件路徑下面,從cmd進入到這個路徑里,輸入命令:
nohup java -jar indexer-cli-5.1.1.jar -u nexus-maven-repository-index.613.gz -d indexer & |
執行完之后,把indexer文件夾下的所有內容都復制到%nexus-home%\sonatype-work\nexus\indexer\central-ctx下面。
重新啟動nexus,進入管理界面,選擇central->Browse Index,就看到更新的索引了。
注意:nexus是需要重新啟動的,我是在做上面的所有步驟之前,先停掉nexus,等上面四個步驟完成之后,再啟動nexus的。
倉庫遷移
Nexus的構件倉庫都保存在sonatype-work目錄中,該目錄的位置由nexus/conf/nexus.properties配置文件指定。
倉庫遷移需要兩個過程:備份和還原
備份倉庫:將sonatype-work文件夾整體備份即可,也可以選擇只備份最重要的兩個文件夾索引(indexer)和倉庫(storage)
還原倉庫:將備份好的sonatype-work文件拷貝到新的服務器中。然后修改nexus/conf/nexus.properties配置文件,重新指定倉庫的目錄。
如果覺得本文對您有所幫助,歡迎您掃碼下圖所示的支付寶和微信支付二維碼對本文進行隨意打賞。您的支持將鼓勵我繼續創作!