Nexus搭建自己的Maven私服

簡介

Nexus是Maven倉庫管理器,管理開發所需要的構件。如果你每次都是從Apache提供的Maven中央倉庫去下載所需要的構件,那么這通常不是一個好的做法,應該在本地架設一個Maven倉庫服務器,再代理遠程倉庫的同時維護本地倉庫,以節省帶寬和時間,那么Nexus可以滿足這樣的需求。

此外Nexus還提供了強大的倉庫管理功能,構件搜索功能,基于Restful客戶端,占用較少的內存。

基于簡單的文件系統而非數據庫,這些優點使其日趨成為最流行的Maven倉庫管理器。


下載

Nexus的官方地址:http://www.sonatype.org/nexus/

下載最新的版本,目前最新版本為:

nexus-3.2.0-01-mac.tgz

nexus-3.2.0-01-unix.tar.gz

nexus-3.2.0-01-win64.zip

根據自己的操作系統選擇安裝包,我的電腦是ubuntu系統,所以我下載的是nexus-3.2.0-01-unix.tar.gz,解壓到任意目錄,獲得目錄結構:

|--nexus-3.2.0-01是Nexus的服務主目錄

|--sonatype-work是真正的倉庫

啟動

Nexus需要依賴java環境,Java的安裝這里就不做說明了,需要注意的是,官方已經明確說明,nexus3.x版本的運行環境需在java8的環境下。

如果需要修改Nexus服務端口或IP,端口配置在/?nexus-3.2.0-01/etc/ nexus-default.properties

在/?nexus-3.2.0-01/bin下找到nexus執行./nexus?run?&啟動服務。

nexus支持如下命令:{start|stop|run|run-redirect|status|restart|force-reload}

Nexus的配置需要用admin角色完成,默認密碼是admin123,進入首頁之后,在右上角進行登錄。

配置

Nexus里可以配置3種類型的倉庫,分別是proxy,hostedgroup。

1.?Proxy是遠程倉庫的代理:比如說在Nexus中配置了central repository的proxy,當用戶向這個proxy請求一個構件時,這個proxy就會先在本地查找,如果找不到的話,再去遠程倉庫下載,返回給用戶。相當于一個中轉的作用。

2.?Hosted是宿主倉庫:用戶可以把一些自己的構件,deploy到hosted中。

3.?Group是倉庫組:在Maven里沒有這個概念,是Nexus特有的,目的是將上述多個倉庫聚合,對用戶暴露統一的地址,這樣用戶就不需要配置多個地址,只要統一配置group地址就可以了。

配置Repository

1.?Central Repository的proxy可能就是最關鍵的一個配置,因為絕大部分構件都是通過這個proxy得到的。在安裝完Nexus,這個proxy是預置的,代理了遠程服務https://repo1.maven.org/maven2/,網上有一些其他公開的Maven倉庫,可以用同樣的辦法,在Nexus中配置Proxy(如下圖maven-public)。

2.?Hosted?Repository一般會配置3個,分別是3rd?party,snapshots,releases,分別用來保存第三方的jar,公司內部jar包的快照,公司內部的發布版(如下圖maven-releases,maven-snapshots)。

3.?Group Repository是一個虛擬的倉庫,通過對實體倉庫聚合對外暴露統一的地址(如下圖maven-public)。

到這里nexus的基本配置就結束了,當然上面介紹的都是最最基本的配置,nexus的功能非常強大。2.x和3.x的差別也是非常大,3.x版本更增加了對 Docker,NuGet,npm,Bower的支持,全面升級了頁面,增加管理接口以自動管理任務,性能和用戶體驗也都有所改善。

使用

這里介紹一下本地Gradle工程下如何使用剛搭建起來的Nexus私服

在build.gradle里面配置:

repositories {

maven { url'http://localhost:8081/repository/maven-public'}

}

在gradle.properties里面配置

nexusUrl=http://localhost:8081

nexusUsername=admin

nexusPassword=admin123

并在build.gradle里面加入

uploadArchives {

repositories {

applyplugin:'maven'

mavenDeployer {

repository(url:"${nexusUrl}/repository/maven-releases/") {

authentication(userName:nexusUsername,password:nexusPassword)

}

snapshotRepository(url:"${nexusUrl}/repository/maven-snapshots") {

authentication(userName:nexusUsername,password:nexusPassword)

}

}

}

}

刷新gradle項目,可以看到發布包的gradle task,如圖。

此時針對gradle使用nexus私服的基本配置已經完成,可以正常下載包,并且發布snapshot及release包。

參考官方資料:https://books.sonatype.com/nexus-book/reference3/index.html

本文作者:孫剛(點融黑幫),LoanBusiness Team 軟件開發工程師,平時喜歡看看電影玩玩游戲,標準程序猿一枚。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 首先私服是一種衍生出來的特殊的Maven遠程倉庫,構建私服的好處請看3.5私服 可以幫助大家建立私服的倉庫管理軟件...
    zlcook閱讀 10,639評論 0 32
  • |-1-更新內容[6.從倉庫解析依賴的機制(重要)] 1Maven倉庫作用 倉庫用來存儲所有項目使用到構件,在ma...
    zlcook閱讀 6,145評論 0 25
  • 如需轉載請標明出處:http://blog.csdn.net/u011974987/article/details...
    Xiho丶閱讀 3,137評論 1 6
  • 私服簡介 私服是架設在局域網的一種特殊的遠程倉庫,目的是代理遠程倉庫及部署第三方構件。有了私服之后,當 Maven...
    技術學習閱讀 9,186評論 1 8
  • 人之所以會心累,就是常常徘徊在堅持和放棄之間,舉棋不定。生活中總會有一些值得我們記憶的東西,也有一些必須要放棄的東...
    841fd886a8c5閱讀 370評論 0 0