Maven之Maven私服(三)
目錄
一、私服搭建
在區域網內搭建的maven的遠端倉庫伺服器稱為私服。
1. 下載nexus
Nexus是Maven倉庫管理器,可以搭建maven倉庫,同時提供倉庫管理功能,構件搜尋功能等。
下載連結:http://www.sonatype.org/nexus/archived/
2. 安裝nexus
下載後解壓,cmd管理員模式下進入bin目錄,執行命令:nexus.bat install
3. 啟動nexus
方式1:cmd進入bin目錄,執行nexus.bat start
方式2:windows服務列表那裡啟動
檢視nexus的配置檔案conf/nexus.properties,如下圖:
二、Nexus的倉庫型別
Nexus的倉庫有4種類型:
1. hosted:
宿主倉庫,部署自己的jar到這個型別的倉庫,包括releases和snapshot,以及引用第三方的jar包。
2. proxy:
代理倉庫,用於代理遠端的公共倉庫,如maven中央倉庫,使用者連線私服,私服自動去中央倉庫下載jar包或者外掛。
3. group:
倉庫組,用來合併多個hosted/proxy倉庫,通常配置maven去連線倉庫組。
4. virtual:
相容Maven1版本的jar或者外掛。
Nexus倉庫預設在sonatype-work\nexus\storage目錄下:
• apache-snapshots:代理倉庫,儲存snapshots構件,代理地址https://repository.apache.org/snapshots/
• central-m1:virtual型別倉庫,相容Maven1 版本的jar或者外掛
• releases:本地倉庫,儲存releases構件。
• snapshots:本地倉庫,儲存snapshots構件。
• thirdparty:第三方倉庫
• public:倉庫組
三、將專案打包釋出到私服
- 需求
例子:假設多團隊分別開發dao、service、web,某個團隊開發完dao將dao釋出到私服供service團隊使用。
- 配置
①在客戶端(即進行部署dao工程的計算機)上配置maven環境,並修改setting.xml檔案,配置連線私服的使用者和密碼。
<servers>
標籤下加入:
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
注:
releases:釋出版本專案倉庫。
snapshorts:測試版本專案倉庫。
②配置專案pom.xml
配置私服倉庫的地址,本公司的自己的jar包會上傳到私服的hosted倉庫,根據工程的版本號決定上傳到哪個hosted倉庫,如果版本為release則上傳到release倉庫,版本為snapshorts同理。
現在在dao模組的pom.xml檔案加入:
<distributionManagement>
<repository>
<id>releases</id>
<url>http://localhost:8081/nexus/content/repositories/releases/</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
</snapshotRepository>
</distributionManagement>
注:
pom.xml這裡 和 settings.xml 配置 對應!
③釋出
將專案dao模組打成jar包釋出到私服。啟動Nexus(這裡還需要啟動mysql),對dao工程執行deploy命令。
可以看到如下圖:
四、從私服上下載Jar包
需求
例子:從私服下載dao工程的jar包。在settings.xml中配置倉庫
<profies>
標籤下加入:
<profile>
<!--profile的id-->
<id>dev</id>
<repositories>
<repository>
<!--倉庫id,repositories可以配置多個倉庫,保證id不重複-->
<id>nexus</id>
<!--倉庫地址,即nexus倉庫組的地址-->
<url>http://localhost:8081/nexus/content/groups/public/</url>
<!--是否下載releases構件-->
<releases>
<enabled>true</enabled>
</releases>
<!--是否下載snapshots構件-->
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<!-- 外掛倉庫,maven的執行依賴外掛,也需要從私服下載外掛 -->
<pluginRepository>
<!-- 外掛倉庫的id不允許重複,如果重複後邊配置會覆蓋前邊 -->
<id>public</id>
<name>Public Repositories</name>
<url>http://localhost:8081/nexus/content/groups/public/</url>
</pluginRepository>
</pluginRepositories>
</profile>
使用profile定義倉庫需要啟用才能生效:
<activeProfiles>
<activeProfile>dev</activeProfile>
</activeProfiles>
配置成功後可通過eclipse檢視Effective Pom中的repositories驗證是否配置成功: