本文介紹的是nexus3.14.0版本在linux環境下安裝、啟動、搭建私庫。
nexus3以上的版本太新了,網上很少介紹安裝細節的。據了解和2.X版本有所不同了。
1、前提
linux機器上需先安裝好jdk,並且配置好java環境變量。
安裝好maven,並且配置好maven環境變量。
2、安裝
把下載好的nexus-3.14.0-04-mac.tgz文件放到/opt/目錄下。這個目錄你自己可以隨意定。
進入tgz文件所在目錄: cd /opt/
在/opt目錄下解壓縮tgz文件命令: tar -zxvf nexus-3.14.0-04-mac.tgz
解壓縮后當前目錄出現了兩個目錄: nexus-3.14.0-04 和 sonatype-work,注意這個sonatype-work也是個有用的文件夾,不要刪除。
3、修改配置文件
修改啟動文件以root用戶啟動
進入安裝下的bin目錄: cd /opt/nexus-3.14.0-04/bin
用vim命令修改啟動文件nexus: vim nexus
找到127行(如何顯示行號自行百度),把原來的run_as_root=true改為false,這里我是注釋掉原來那行,新增加了一行run_as_root=false,如下:
#run_as_root=true
run_as_root=false
4、啟動
進入啟動相關配置文件: cd /opt/nexus-3.14.0-04/etc/
然后查看配置文件:cat nexus-default.properties
應用啟動端口:
application-port=8081
應用啟動上下文:
nexus-context-path=/
進入bin目錄,啟動nexus: ./opt/nexus-3.14.0-04/bin/nexus start 注意最前面的那個點不要忽略,最后的start參數之前要有一個空格
執行start命令后,輸出:Starting nexus
我本地啟動大約需要30秒左右,查看nexus是否已啟動命令:ps -ef|grep nexus 如果有輸出則證明啟動了。
驗證是否啟動成功,在瀏覽器里輸入url:
http://127.0.0.1:8081/ 如果在別的機器訪問,例如我這里是http://192.168.125.150:8081/ 顯示不出網頁,考慮可能是linux啟用了防火牆,限制了端口號。
這里的url就包含了啟動端口和啟動上下文。
瀏覽器截圖如下:

5、查看nexus相關配置
點擊右上角的Sign in ,用戶名和密碼輸入(默認的):admin / admin123。
點擊設置按鈕,再進入System Information菜單。
1、查看版本信息、節點信息、安裝目錄:

2、查看jdk安裝目錄:

3、查看maven安裝目錄:

4、系統運行時內存情況、線程、聯網情況

其他系統信息不一一列舉。
6、搭建私庫3rd_part
感謝此老兄:https://blog.csdn.net/u013887008/article/details/79429973(向nexus3私服上傳jar包)
使用默認的用戶名和密碼登錄:admin / admin123。
新建倉庫:3rd_part

在nexus3.X版本已經沒有repository ID的概念了,所以取個name就好,配置文件需要用到repository ID的地方統統使用name就行。新建repository:

注意上圖的 Release,nexus2不清楚,但是在nexus3中,這個庫要區分是存放RELEASE穩定版本的,還是存儲SNAPSHOT不穩定版本的。
這會影響到當你使用mvn deploy命令把本地的jar或其他maven構件上傳到nexus私服時,如果你的項目打包版本例如是0.0.1-SNAPSHOT,就會說不允許上傳到release穩定版本庫中。
7、為新版本庫3rd_part歸納到中央庫maven-public
當新庫3rd_part創建完畢時,要把新庫歸納到我們的版本庫中心:maven-public,這個庫是所有其他庫的中央庫,包含了其余所有庫的包,歸納操作步驟:

雙擊maven-public庫,進入詳細頁:

把新建的庫3rd_part點擊向右箭頭歸納到中央庫的組內來,然后點擊save保存。
8、為新版本庫3rd_part創建權限、角色、用戶(可選)
在之前的nexus版本中,但凡創建一個新庫,都要手動創建該庫的權限,但是nexus3中,系統已經自動創建出了新庫的所有權限nx-repository-admin-maven2-3rd_part-*
其余例如read、delete、browse等權限也都已經自動創建好了,權限細粒度還是比較好的。

接下來需手動創建角色:nx-role-3rd_part :

把nx-admin的最大角色包含進來到新角色nx-role-3rd_part ,並把新庫的所有權限 nx-repository-admin-maven2-3rd_part-* 都賦予給這個角色,最后點擊save保存:

創建用戶部分可選,此處省略,類似以上步驟。練習用途的話直接使用admin/admin123即可。如果需要創建用戶,務必把roles角色賦予給這個用戶。
9、maven的setting.xml配置
配置你訪問某個repository倉庫用哪個用戶名和密碼,如果你有多個倉庫,對應不同項目上傳的私服repository地址,則需要在這里配置多個server標簽,在<servers>中添加:
<server> <id>3rd_part</id> <!-- 注意這里的id一定要和你項目中的私服地址id一模一樣,如果這里的用戶名密碼寫錯了,會報錯:會報錯401, ReasonPhrase: Unauthorized. --> <username>admin</username> <password>admin123</password> </server>
配置你的私服地址,在<mirrors>中添加,
<mirror> <!--此處配置所有的構建均從私有倉庫中下載 *代表所有,也可以寫central --> <id>nexus3</id> <mirrorOf>*</mirrorOf> <url>http://192.168.125.150:8081/repository/maven-public/</url> </mirror>
在<profiles>中添加:
<profile> <id>nexus3</id> <repositories> <repository> <id>maven-public</id> <!-- 1111, 這里的id需和2222那里的一樣,在同一個profile里 --> <url>http://192.168.125.150:8081/repository/maven-public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </repository> </repositories> <pluginRepositories> <!-- 這里是插件倉庫地址 --> <pluginRepository> <id>maven-public</id> <!-- 2222, 這里的id需和1111那里的一樣,在同一個profile里 --> <url>http://192.168.125.150:8081/repository/maven-public/</url> <releases><enabled>true</enabled></releases> <snapshots><enabled>true</enabled></snapshots> </pluginRepository> </pluginRepositories> </profile>
啟用id為nexus3的profile的配置:
<activeProfiles> <activeProfile>nexus3</activeProfile> </activeProfiles>
10、項目私服配置
在<project>標簽下添加distributionManagement標簽,這個標簽應該和<groupId><artifactId>這些標簽是同級的:
<!-- 這個配置是上傳到私服的配置 --> <distributionManagement> <repository> <!-- 上傳到私服的倉庫id。注意:nexus3里沒有了repository id的概念,直接使用name作為id的值即可,也可以起一個另外的有意義的名字。
但是!!此id的值必須與setting.xml里server標簽里的其中一個id相同,server里配置的用戶名和密碼才能對這個私庫起作用,否則,會報錯401, ReasonPhrase: Unauthorized.
--> <id>3rd_part</id> <!-- 上傳到私服的倉庫name --> <name>3rd_part</name>
<!-- 一般項目都是上傳到自己的項目私庫,每個項目的私庫應該分開,尤其是微服務項目。同一個微服務項目下的各個子項目應該被放在同一個私庫。 --> <url>http://192.168.125.150:8081/repository/3rd_part/</url> </repository> </distributionManagement>
注意:nexus3里沒有了repository id的概念,直接使用name作為id的值即可,也可以起一個另外的有意義的名字。
11、上傳jar、war到私服
打開cmd,到項目根目錄下,按照以下步驟執行maven命令:
mvn clean //清空target目錄
mvn install //打包項目到target目錄
mvn package //打包項目並且將包同步到本地maven庫
mvn deploy //將打包好的包同步上傳到私庫,deploy命令發布成功截圖如下:

注意,如果你mvn deploy執行的是父類項目,也就是這個項目中的pom.xml中有以下標簽的項目:
<modules>
<module>../project1</module>
<module>../project2</module>
</modules>
那么就會把project1和project2都upload上傳到nexus私服。
12、驗證上傳到私庫的包
在3rd_part私庫中,確實找到了上傳的jar包:

13、上傳包的存放地址
感謝這位老兄:https://www.cnblogs.com/acm-bingzi/p/mavenNexusPath.html (maven上傳jar包到nexus私服后的存放路徑 以及 使用IDEA上傳jar包的步驟)
上圖中可以看到以.jar命名的文件,也可以下載。
這讓我一度以為是以jar包的形式保存在本地,但事實證明,保存在本地的最終是一個 .bytes 類型的文件,它的默認路徑在\sonatype-work\nexus3\blobs\default\content下面以.bytes的文件存在:

注意這個sonatype-work的文件夾在nexus3.14版本中是和nexus-3.14.0-04文件夾同處於一個文件夾下的同一層級。
在tar -zxvf命令解壓縮nexus3.14.tar.gz文件時,自動解壓出兩個文件夾:sonatype-work 、nexus-3.14.0-04
