一、概述
1、概要
現在的項目基本都是用Maven來管理工程,這樣一來在公司內容搭建一個私服就非常有必要了,這樣一來可以管理公司內部用的JAR包,也可以管理第三方的各種JAR來,以免每次都要從外網的倉庫中下載。私服有兩種軟件搭建Nexus和artifactory,這兩個各有優點。本文配置一下Nexus。Nexus還是一個比較流行的私服。
2、Nexus介紹
Nexus是一個強大的Maven倉庫管理器,它極大地簡化了自己內部倉庫的維護和外部倉庫的訪問。利用Nexus你可以只在一個地方就能夠完全控制訪問 和部署在你所維護倉庫中的每個Artifact。Nexus是一套“開箱即用”的系統不需要數據庫,它使用文件系統加Lucene來組織數據。Nexus 使用ExtJS來開發界面,利用Restlet來提供完整的REST APIs,通過m2eclipse與Eclipse集成使用。Nexus支持WebDAV與LDAP安全身份認證。
Nexus的下載地址是:http://www.sonatype.org/nexus/go/到官網上將ZIP的壓縮包下載下來即可,解壓之后發現有兩個文件夾,一個是nexus-2.11.0-02,另一個是sonatype-work;第一個文件夾包含了Nexus運行所需要的文件,是運行Nexus必須的;第二個文件夾目錄包含Nexus生成的配置文件、日志文件、倉庫文件等,當需要備份Nexus的時候,默認備份的是此目錄文件。
二、環境准備
1、apache-maven-3.2.5 百度網盤下載地址:https://pan.baidu.com/s/1Rhglh4_RPgT79pXObQ2vZQ 提取碼:a6h6
關於maven請參考我的另一篇文章:https://www.cnblogs.com/liandy001/p/11287278.html
2、nexus-2.11.4-01-bundle 百度網盤下載地址:https://pan.baidu.com/s/1ZCyVb-Zc5RytvG9tFv5F2Q 提取碼:h3d0
3、JDK1.8 64位 百度網盤下載地址:https://pan.baidu.com/s/1lI6BLbWK7DslmIjI_z81Pg 提取碼:knuz
三、Nexus環境配置
1、修改系統變量
在系統變量Path 添加值(D:\DevelopTools\nexus-2.11.4-01-bundle\nexus-2.11.4-01\bin;(按實際安裝目錄為准))
2、配置Nexus對應的JDK
在 nexus的根目錄bin\jsw\conf\wrapper.conf的文件
修改:wrapper.java.command=C:\Program Files\Java\jdk1.8.0_131\bin\java
3、安裝Nexus服務
dos窗口輸入指令nexus install
4、啟動Nexus服務
dos窗口輸入指令nexus start
如果啟動失敗,主要有兩種原因:
1、Nexus安裝目錄 bin\jsw\conf\wrapper.conf中的java配置錯誤導致啟動失敗(錯誤可能性1:版本錯誤;錯誤可能性2:寫錯路徑了).
2、8081端口被占用導致啟動失敗(如果是非系統進程占用,結束該進程即可),或修改Jetty的端口,在Nexus的安裝目前/conf/nexus.properties文件中找到 application-port=8081 改為8181就行了。
四、Nexus初步介紹
1.打開瀏覽器,訪問:http://localhost:8081/nexus/:
2.點擊右上角 Log In,使用用戶名:admin ,密碼:admin123 登錄,可使用更多功能:
3.點擊左側 Repositories 鏈接,查看 Nexus 內置的倉庫:
4.Nexus 的倉庫分為這么幾類:
- hosted 宿主倉庫:主要用於部署無法從公共倉庫獲取的構件(如 oracle 的 JDBC 驅動)以及自己或第三方的項目構件;
- proxy 代理倉庫:代理公共的遠程倉庫;
- virtual 虛擬倉庫:用於適配 Maven 1;
- group 倉庫組:Nexus 通過倉庫組的概念統一管理多個倉庫,這樣我們在項目中直接請求倉庫組即可請求到倉庫組管理的多個倉庫。
5.為了更好的使用 Nexus 的搜索,我們可以設置所有 proxy 倉庫的 Download Remote Indexes 為 true,即允許下載遠程倉庫索引。
索引下載成功之后,在 Browse Index 選項卡下,可以瀏覽到所有已被索引的構件信息,包括坐標、格式、Maven 依賴的 xml 代碼:
6.管理本地倉庫
我們前面講到類型為hosted的為本地倉庫,Nexus預定義了3個本地倉庫,分別是Releases, Snapshots, 3rd Party. 分別講一下這三個預置的倉庫都是做什么用的:
Releases:
這里存放我們自己項目中發布的構建, 通常是Release版本的, 比如我們自己做了一個FTP Server的項目, 生成的構件為ftpserver.war, 我們就可以把這個構建發布到Nexus的Releases本地倉庫. 關於符合發布后面會有介紹.
Snapshots:
這個倉庫非常的有用, 它的目的是讓我們可以發布那些非release版本, 非穩定版本, 比如我們在trunk下開發一個項目,在正式release之前你可能需要臨時發布一個版本給你的同伴使用, 因為你的同伴正在依賴你的模塊開發, 那么這個時候我們就可以發布Snapshot版本到這個倉庫, 你的同伴就可以通過簡單的命令來獲取和使用這個臨時版本.
3rd Party:
顧名思義, 第三方庫, 你可能會問不是有中央倉庫來管理第三方庫嘛,沒錯, 這里的是指可以讓你添加自己的第三方庫, 比如有些構件在中央倉庫是不存在的. 比如你在中央倉庫找不到Oracle 的JDBC驅動, 這個時候我們就需要自己添加到3rdparty倉庫。
五、通過Maven發布到Nexus中央倉庫
1 . 修改私服中倉庫的部署策略
Release版本的項目應該發布到Releases倉庫中,對應的,Snapshot版本應該發布到Snapshots倉庫中。Maven根據pom.xml文件中版本號<version>節點的屬性是否包含-SNAPSHOT,來判斷該項目是否是snapshot版本。如果是snapshot版本,在執行mvn deploy部署命令時,maven會自動將項目發布到Snapshots倉庫。要發布項目,首先需要將Releases倉庫和Snapshots倉庫的“Deployment Policy”設置為“Allow Redeploy”:
2 . 配置項目的部署倉庫
在項目的pom.xml文件中增加配置:
<distributionManagement> <repository> <id>releases</id> <url>http://127.0.0.1:8081/nexus/content/repositories/releases</url> </repository> <snapshotRepository> <id>snapshots</id> <url>http://127.0.0.1:8081/nexus/content/repositories/snapshots</url> </snapshotRepository> </distributionManagement>
3.設置Maven的服務賬號和密碼
D:\maven\apache-maven-3.2.5\conf\settings.xml
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
4.發布項目到Nexus中央倉庫
右鍵項目->run as->maven build……->run
發布成功后,在私服的倉庫中就能看到了:
六、在Nexus中手動上傳項目構件
七、Nexus私服庫快速導入jar包
1、找到Repositories->Central->Configuration;如下圖
備注:圖中第三步 是Nexus 默認的工作路徑,需要把你本地的 maven 倉庫地中的 所有jar包通過 XFTP上傳到里面,再Save;
Nexus私服庫快速導入jar包結束;