使用Nexus搭建Maven代理倉庫

使用Maven構建和管理項目是非常享受的一件事,我們可以從Maven中央倉庫下載所需要的構件(artifact),但實際開發中由於種種原因我們需要在架設一個Maven本地代理倉庫,如:不方便訪問公網、節省帶寬和時間、管理自家的共用artifact等等。本地地理倉庫是我自己取的名字,爲了不與下文的本地倉庫想混淆。

獲取構建的流程如下:用戶使用Maven構建項目時,首先是要直接從本地倉庫獲取的,如果本地倉庫沒有,它會根據setting.xml的設置去首先嚐試從遠程倉庫下載構件至本地倉庫,然後再使用本地倉庫的構件。如果setting.xml設置的遠程倉庫是本地代理倉庫,則本地代理倉庫先嚐試從自己的庫中獲取,如果沒有再從遠程倉庫(比如中央倉庫)下載構件至本地倉庫。

Nexus 是一個優秀的Maven倉庫管理器,還提供了強大的倉庫管理功能,構件搜索功能,它基於REST,友好的UI是一個extjs的REST客戶端,它佔用較少的內存,基於簡單文件系統而非數據庫。這些優點使其日趨成爲最流行的Maven倉庫管理器。本文就使用Nexus搭建一個本地代理倉庫。

下載和安裝

Nexus官方下載地址:http://www.sonatype.org/nexus/go,目前最新的版本是2.7.2。

Nexu安裝非常容易,因爲它內嵌了Jetty,只要有JRE救能直接運行。解壓Nexu包會得到兩個目錄nexus-2.7.2-03和sonatype-work,sonatype-work是默認倉庫目錄。運行、安裝都是使用nexus-2.7.2-03/bin/nexus.bat文件,它的使用方式:

進入bin目錄,然後: nexus.bat { console : start : stop : restart : install : uninstall }

其中console是控制檯方式運行,install是以windows service寄存,uninstall是下載windows service,start是運行windows service,stop是停止windows service,restart是重啓windows service,。

Nexus默認端口是8081,可以在nexus-2.7.1-01/conf/nexus.properties中修改,啓動後就可以通過地址:http://localhost/:8081/nexus 來訪問了。界面如下:


管理倉庫

管理倉庫需要先登錄,默認登錄用戶名/密碼是admin/admin123。登錄後就可以看到左欄菜單的管理項。

這裏,可以管理倉庫,配置Nexus系統,管理任務,管理用戶,角色,權限,查看系統的RSS源,管理及查看系統日誌,等等。

  1. 設置Nexus代理上公網
    如果您的本地代理倉庫服務器沒有公網權限,Nexus爲你留了使用代理的路子,點擊右邊菜單的“Server”,在右邊找到:

    添加你的代理服務器即可。

  1. 倉庫管理
    點擊左邊導航欄的Repositories,界面的主面板會顯示所有一個所有倉庫及倉庫組的列表,你會看到它們的Type字段的值有group,hosted,proxy,virtual。這裏我們不關心virtual,只介紹下另外三種類型:如何管理、添加等操作,Nexus都寫的很清楚了,我就不一一贅述了。

  • hosted,本地代理倉庫,通常我們會部署自己的構件到這一類型的倉庫。

  • proxy,代理的遠程倉庫,它們被用來代理遠程的公共倉庫,如maven中央倉庫。

  • group,倉庫組,用來合併多個hosted/proxy倉庫,通常我們配置maven依賴倉庫組。

修改setting.xml配置Maven的倉庫

Maven安裝後默認的是使用中央倉庫,這是爲了能讓Maven開箱即用。而Maven缺省的本地倉庫地址爲${user.home}/.m2/repository。也就是說,一個用戶會對應的擁有一個本地倉庫。你也可以自定義本地倉庫的位置,修改${user.home}/.m2/settings.xml。

關於更多setting.xml字段解釋請看這裏

 

如果要配置應用先從nexus倉庫中尋找jar,找不到再到公共倉庫去找,則只需要在工程的pom文件中加入如下配置即可(推薦做法)

<repositories>
  <repository>
   <id>nexus</id>
   <name>local private nexus</name>
   <url>http://localhost:8081/nexus/content/groups/public/</url>
   <releases>
    <enabled>true</enabled>
   </releases>
   <snapshots>
    <enabled>false</enabled>
   </snapshots>
  </repository>
 </repositories>
 <pluginRepositories>
  <pluginRepository>
   <id>nexus</id>
   <name>local private nexus</name>
   <url>http://localhost:8081/nexus/content/groups/public/</url>
   <releases>
    <enabled>true</enabled>
   </releases>
   <snapshots>
    <enabled>false</enabled>
   </snapshots>
  </pluginRepository>
 </pluginRepositories>

現在你就可以使用本地倉庫構建Maven項目了,踏上愉快的構建之旅!!

部署構件至Nexus

  1. 通過Nexus UI部署

    有時候有個jar文件你無法從公共Maven倉庫找到,但是你能從其它得到這個jar文件(甚至是POM),那麼你完全可以將這個文件部署到Nexus中,使其成爲標準流程的一部分。步驟如下:

    點擊左邊導航欄的"Repository",在右邊的倉庫列表中選擇一個倉庫,如“3rd Party”,然後在頁面下方的tab選擇“Artifact Upload Artifact(s)”,你會看到構件上傳界面。選擇你要上傳的構件,並指定POM,(或者手工編寫GAV等信息),最後點擊Upload,該構件就直接被部署到了Nexus的"3rd Party"倉庫中。

    部署上傳之後,在工程的pom.xml中加入dependency, mvn install的時候即會先嚐試從nexus中下載所需要的依賴包。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章