windows 下用 Nexus Sonatype 搭建 Maven 私服
1、 為什麼使用Nexus
如果沒有私服,我們所需的所有構件都需要通過maven的中央倉庫和第三方的Maven倉庫下載到本地,而一個團隊中的所有人都重複的從maven倉庫下載構件無疑加大了倉庫的負載和浪費了外網頻寬,如果網速慢的話,還會影響專案的程序。很多情況下專案的開發都是在內網進行的,連線不到maven倉庫怎麼辦呢?開發的公共構件怎麼讓其它專案使用?這個時候我們不得不為自己的團隊搭建屬於自己的maven私服,這樣既節省了網路頻寬也會加速專案搭建的程序,當然前提條件就是你的私服中擁有專案所需的所有構件。
2、Nexus下載
3、Nexus啟動
我下載的是zip包,解壓後進入\nexus-2.1.2-bundle\nexus-2.1.2\bin\jsw\,根據作業系統型別選擇資料夾,我選的是windows-x86-32資料夾,進入後可看到如下所示bat檔案。
雙擊console-nexus.bat執行。遊覽器中輸入http://127.0.0.1:8081/nexus/,出現圖(2)所示就代表nexus已經啟動成功。
8081為預設的埠號,要修改埠號可進入nexus-2.1.2-bundle\nexus-2.1.2\conf\開啟nexus.properties檔案,修改application-port屬性值就可以了。
預設的使用者名稱和密碼:admin/admin123,登入後看到圖下所示:
4、Nexus倉庫
nexus的倉庫型別分為以下四種:
group: 倉庫組
hosted:宿主
proxy:代理
virtual:虛擬
首次登陸nexus後可以看到以下一個倉庫組和多個倉庫。
Public Repositories: 倉庫組
3rd party: 無法從公共倉庫獲得的第三方釋出版本的構件倉庫
Apache Snapshots: 用了代理ApacheMaven倉庫快照版本的構件倉庫
Central: 用來代理maven中央倉庫中釋出版本構件的倉庫
Central M1 shadow: 用於提供中央倉庫中M1格式的釋出版本的構件映象倉庫
Codehaus Snapshots: 用來代理CodehausMaven 倉庫的快照版本構件的倉庫
Releases: 用來部署管理內部的釋出版本構件的宿主型別倉庫
Snapshots:用來部署管理內部的快照版本構件的宿主型別倉庫
5、配置nexus
5.1、開啟遠端索引
新搭建的neuxs環境只是一個空的倉庫,需要手動和遠端中心庫進行同步,nexus預設是關閉遠端索引下載,最重要的一件事情就是開啟遠端索引下載。登陸nexus系統,預設使用者名稱密碼為admin/admin123。
點選左邊Administration選單下面的Repositories,找到右邊倉庫列表中的三個倉庫Apache Snapshots,Codehaus Snapshots和Maven Central,然後再沒有倉庫的configuration下把Download Remote Indexes修改為true。如下圖
然後在Apache Snapshots,Codehaus Snapshots和Maven Central這三個倉庫上分別右鍵,選擇Repari Index,這樣Nexus就會去下載遠端的索引檔案。
這樣設定以後, Nexus會自動從遠端中央倉庫下載索引檔案, 為了檢驗索引檔案自動下載是否生效,可以卻換到Browse Index
在左邊選單欄裡面有個Artifact Search, 在輸入框裡面輸入你想要搜尋的構件名字,比如:maven, 那麼查詢結果如下:
5.2建立宿主倉庫
新 建公司的內部倉庫,步驟為Repositories –> Add –> Hosted Repository,在頁面的下半部分輸入框中填入Repository ID和Repository Name即可,比如分別填入
zfy 和 zfy repostiory,另外把Deployment Policy設定為Allow Redeploy,點選save就建立完成了。
這裡我點選新增宿主型別的倉庫,在倉庫列表的下方會出現新增倉庫的配置,如下所示:
點選save按鈕後就會在倉庫列表中看到剛才新增的倉庫。
5.3、建立Nexus倉庫組
Nexus 中倉庫組的概念是Maven沒有的,在Maven看來,不管你是hosted也好,proxy也好,或者group也好,對我都是一樣的,我只管根據 groupId,artifactId,version等資訊向你要構件。為了方便Maven的配置,Nexus能夠將多個倉庫,hosted或者 proxy合併成一個group,這樣,Maven只需要依賴於一個group,便能使用所有該group包含的倉庫的內容。
neuxs- 1.9.2.3中預設自帶了一個名為“Public Repositories”組,點選該組可以對他保護的倉庫進行調整,把剛才建立的公司內部倉庫zfy repostiory加入其中,這樣就不需要再在maven中明確指定內部倉庫 的地址了。同時建立一個Group ID為public-snapshots、Group Name為Public Snapshots Repositories的組,把Apache Snapshots、Codehaus Snapshots、Snapshots和zfy repostiory加入其中。
到這裡neuxs的安裝配置就完成了,下面介紹如何在maven中使用自己的私服。
5.4、建立Nexus代理倉庫點選選單欄上的Add按鈕後選擇Proxy Repository,看到如下所示配置介面:
以上本人分別建立 了 hosted和group ,沒有建立proxy,經maven測試通過。
6、 settings.xml的配置
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups></pluginGroups>
<proxies></proxies>
<servers>
<server>
<id>nexus-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>nexus-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
<mirrors>
<mirror>
<id>nexus-releases</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>nexus-snapshots</id>
<mirrorOf>*</mirrorOf>
<url>http://localhost:8081/nexus/content/groups/public-snapshots</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>nexus</id>
<repositories>
<repository>
<id>nexus-releases</id>
<url>http://nexus-releases</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
<repository>
<id>nexus-snapshots</id>
<url>http://nexus-snapshots</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus-releases</id>
<url>http://nexus-releases</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
<pluginRepository>
<id>nexus-snapshots</id>
<url>http://nexus-snapshots</url>
<releases><enabled>true</enabled></releases>
<snapshots><enabled>true</enabled></snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>nexus</activeProfile>
</activeProfiles>
</settings>
<span style="line-height: 18px; font-family: Consolas, 'Courier New', Courier, mono, serif; background-color: inherit;">7、 maven 專案 的pom.xml配置 </span>
<span style="line-height: 18px; font-family: Consolas, 'Courier New', Courier, mono, serif; background-color: inherit;"></span><pre name="code" class="html"><pre class="html" name="code"> <distributionManagement>
<!-- 兩個ID必須與 setting.xml中的<server><id>nexus-releases</id></server>保持一致-->
<repository>
<id>nexus-releases</id>
<name>Nexus Release Repository</name>
<url>http://localhost:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>nexus-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://localhost:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement></pre><pre class="html" name="code"> </pre><pre class="html" name="code">8、mvn:deploy命令上傳包,會發現下載路徑必不是中央庫的路徑,而是nexus裡面的倉庫組路徑。這個說明配置環境成功。</pre><pre class="html" name="code"><img alt="" src="http://img.my.csdn.net/uploads/201301/10/1357787083_3866.png"><img alt="" src="http://img.my.csdn.net/uploads/201301/10/1357787109_8992.png"></pre><pre class="html" name="code"> </pre>
<pre></pre>
<pre></pre>