簡介:
Maven倉庫:本地倉庫和遠端倉庫(中央倉庫,私服,其它遠端倉庫)
Nexus是一個強大的流行的Maven倉庫管理器,它極大地簡化了自己内部倉庫的維護和外部倉庫的通路,節省了帶寬和時間。
利用Nexus你可以隻在一個地方就能夠完全控制通路和部署在你所維護倉庫中的每個Artifact。
Nexus是一套“開箱即用”的系統不需要資料庫,它使用檔案系統加Lucene來組織資料。
Nexus使用ExtJS來開發界面,利用Restlet來提供完整的REST APIs,通過IDEA和Eclipse內建使用。
Nexus支援WebDAV與LDAP安全身份認證。
Nexus提供了強大的倉庫管理功能,構件搜尋功能,它基于REST,友好的UI是一個extjs的REST用戶端,占用較少的記憶體,基于簡單檔案系統而非資料庫.
Nexus是一種遠端倉庫,在遠端倉庫中,預設的是中央倉庫,中央倉庫是Maven核心自帶的遠端倉庫。Nexus是私服的一種。
為什麼不使用中央倉庫而要安裝Nexus呢?
1.一些無法從外部倉庫下載下傳的構件,例如内部的項目還能部署到私服上,以便供其他依賴項目使用。
2. 為了節省帶寬和時間,在區域網路内架設一個私有的倉庫伺服器,用其代理所有外部的遠端倉庫。
當本地Maven項目需要下載下傳構件時,先去私服請求,如果私服沒有,則再去遠端倉庫請求,從遠端倉庫下載下傳構件後,把構件緩存在私服上。
這樣,即使暫時沒有Internet連結,由于私服已經緩存了大量構件,整個項目還是可以正常使用的。同時,也降低了中央倉庫的負荷。
優點:
加速建構;節省帶寬;節省中央maven倉庫的帶寬;穩定(應付一旦中央伺服器出問題的情況);控制和審計;能夠部署第三方構件;可以建立本地内部倉庫;可以建立公共倉庫
下載下傳:
下載下傳位址:https://help.sonatype.com/repomanager3/download
Maven官網關于Repository Manager的介紹: https://maven.apache.org/repository-management.html
安裝:
使用的版本:nexus-2.12.0-01-bundle.zip
解壓檔案到:F:\nexus-2.12.0-01-bundle
運作檔案:F:\nexus-2.12.0-01-bundle\nexus-2.12.0-01\bin\nexus.bat
配置環境變量添加到path中:F:\nexus-2.12.0-01-bundle\nexus-2.12.0-01\bin\
通路:http://127.0.0.1:8081/nexus/
登陸, 預設賬号: admin 密碼: admin123
安裝成功後會在目錄F:\nexus-2.12.0-01-bundle\sonatype-work\nexus下生成配置檔案,日志檔案,倉庫檔案,索引檔案,插件檔案,緩存檔案等。
建立倉庫:
在Repositories 倉庫管理界面中有多種預設的倉庫,也可以添加新的倉庫。
central,Type為proxy,表示代理倉庫。代理倉庫用來代理遠端倉庫(central代理的是超級POM中配置的Maven中央倉庫),當在下載下傳元件時,如果代理倉庫搜尋不到,則會把請求轉發到遠端倉庫從遠端倉庫下載下傳。從遠端倉庫下載下傳後會緩存到代理倉庫,下次還有該元件的請求則會直接到代理倉庫下載下傳,不會再次請求遠端倉庫。可使用阿裡的倉庫http://maven.aliyun.com/nexus/content/groups/public/
releases/snapshots,Type為hosted,表示為宿主倉庫。宿主倉庫主要用來部署團隊内部使用的内部元件,預設的releases和snapshots分别用來部署團隊内部的釋出版本元件和快照版本元件。Releases一般是已經釋出的Jar包,Snapshot一般是未釋出的版本,其權限不同。
Nexus預定義了3個本地倉庫,分别為Releases,Snapshots,和3rd Party。這三個倉庫都有各自明确的目的。Releases用于部署我們自己的release構件,Snapshots用于部署我們自己的snapshot構件,而3rd Party用于部署第三方構件,有些構件如Oracle的JDBC驅動,我們不能從公共倉庫下載下傳到,我們就需要将其部署到自己的倉庫中。
Type為group,一般包含多個proxy倉庫和hosted倉庫,在項目中一般引入這種類型的倉庫就可以下載下傳到proxy和hosted中的包。
添加一個本地倉庫:
本地倉庫配置:需要在maven的settings.xml中增加如下配置
<server>
<id>test-releases</id>
<username>admin</username>
<password>admin123</password>
</server>
<server>
<id>test-snapshots</id>
<username>admin</username>
<password>admin123</password>
</server>
在pom.xml中添加
<repositories>
<repository>
<id>nexus</id>
<name>test-releases</name>
<url>http://localhost:8081/repository/test-releases/</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>nexus</id>
<name>test-releases</name>
<url>http://localhost:8081/repository/test-releases/</url>
</pluginRepository>
</pluginRepositories>
https://repo.eclipse.org/
https://oss.sonatype.org/
http://lib.gcssloop.com/
參考:https://www.iteye.com/blog/juvenshun-349534