maven倉庫--私服(Nexus的配置使用)


 

maven--私服的搭建(Nexus的使用)和注意的問題


私服是什麼

私服,私有服務器,是公司內部Maven項目經常需要的東東,不總結一下,不足以體現出重視。Nexus是常用的私用Maven服務器,一般是公司內部使用。下載地址是http://www.sonatype.org/nexus/go。默認端口8081,這裏我選擇最新版nexus-2.5.0-04。

常用功能

Nexus常用功能就是:指定私服的中央地址、將自己的Maven項目指定到私服地址、從私服下載中央庫的項目索引、從私服倉庫下載依賴組件、將第三方項目jar上傳到私服供其他項目組使用。

開啓Nexus服務後訪問url地址http://localhost:8081/nexus/(推薦使用自己的ip地址),之後登錄系統,用戶名密碼分別是:admin/admin123.

最頻繁的就是點擊左側菜單欄的Repositories按鈕




一般用到的倉庫種類是hosted、proxy。Hosted代表宿主倉庫,用來發布一些第三方不允許的組件,比如oracle驅動、比如商業軟件jar包。Proxy代表代理遠程的倉庫,最典型的就是Maven官方中央倉庫、JBoss倉庫等等。如果構建的Maven項目本地倉庫沒有依賴包,那麼就會去這個代理站點去下載,那麼如果代理站點也沒有此依賴包,就回去遠程中央倉庫下載依賴,這些中央倉庫就是proxy。代理站點下載成功後再下載至本機。筆者認爲,其實Maven這個自帶的默認倉庫一般情況下已經夠大多數項目使用了。特殊情況時在配置新的倉庫,指定url即可,一般熟悉ExtJS的人操作這個Nexus都沒什麼問題,單詞不是很難,不明白的查查單詞基本差不多。就是如果Sonatype公司對其做了國際化的處理就更好了。


hosted   類型的倉庫,內部項目的發佈倉庫

releases 內部的模塊中release模塊的發佈倉庫

snapshots 發佈內部的SNAPSHOT模塊的倉庫

3rd party 第三方依賴的倉庫,這個數據通常是由內部人員自行下載之後發佈上去

proxy   類型的倉庫,從遠程中央倉庫中尋找數據的倉庫

group   類型的倉庫,組倉庫用來方便我們開發人員進行設置的倉庫



maven項目索引

下載Maven項目索引,項目索引是爲了使用者能夠在私服站點查找依賴使用的功能




保存後後臺會運行一個任務,點擊菜單欄的Scheduled Tasks選項即可看到有個任務在RUNNING。 下載完成後,Maven索引就可以使用了,在搜索欄輸入要搜索的項,就可以查到相關的信息。例如spring-core




就可以檢索出它的相關信息,包括怎麼配置依賴信息。我們要想使用這個私服倉庫,先在項目pom中配置相關私服信息

指定倉庫

[html] view plaincopy
  1. <repositories>  
  2.         <repository>  
  3.             <id>nexus</id>  
  4.             <name>nexus</name>  
  5.             <url>http://192.168.1.103:8081/nexus/content/groups/public/</url>  
  6.             <releases>  
  7.                 <enabled>true</enabled>  
  8.             </releases>  
  9.             <snapshots>  
  10.                 <enabled>true</enabled>  
  11.             </snapshots>  
  12.         </repository>  
  13.     </repositories>  


指定插件倉庫


[html] view plaincopy
  1. <pluginRepositories>  
  2.         <pluginRepository>  
  3.             <id>nexus</id>  
  4.             <name>nexus</name>  
  5.             <url>http://192.168.1.103:8081/nexus/content/groups/public/</url>  
  6.             <releases>  
  7.                 <enabled>true</enabled>  
  8.             </releases>  
  9.             <snapshots>  
  10.                 <enabled>true</enabled>  
  11.             </snapshots>  
  12.         </pluginRepository>  
  13.     </pluginRepositories>  

這樣只有本項目纔在私服下載組件
這樣這個Maven項目構建的時候會從私服下載相關依賴。當然這個配置僅僅是在此項目中生效,對於其他項目還是不起作用。如果相對Maven的其他項目也生效的話。需要修改全局的settings.xml文件。

修改settings.xml爲



追加激活profile

[html] view plaincopy
  1. <activeProfiles>  
  2.          <activeProfile>central</activeProfile>  
  3.           
  4.       </activeProfiles>  


之後所有本機的Maven項目就在私服下載組件。(這樣比較好)


項目的發佈

[html] view plaincopy
  1. <distributionManagement>  
  2.         <repository>  
  3.             <id>user-release</id>  
  4.             <name>User Project Release</name>  
  5.             <url>http://192.168.1.103:8081/nexus/content/repositories/releases/</url>  
  6.         </repository>  
  7.   
  8.         <snapshotRepository>  
  9.             <id>user-snapshots</id>  
  10.             <name>User Project SNAPSHOTS</name>  
  11.             <url>http://192.168.1.103:8081/nexus/content/repositories/snapshots/</url>  
  12.         </snapshotRepository>  
  13.     </distributionManagement>  

注意配置了還是發佈項目到私服失敗,原因爲沒有權限,會出現401錯誤碼,原因就是權限不夠。

配置權限在settings.xml





注意Respository中的id一定要和server下的id一致,切記!!否則出現權限問題。

然後運行發佈

clean deploy

在控制檯發佈成功

然後進入到私服上的倉庫中,看一下確實存在剛剛發佈的項目








宿主庫——3rd party

假如我們下載了Oracle的驅動程序jar包想給其他項目組使用,就需要上傳該jar包。選中宿主庫——3rd party,之後選擇Artifact Upload上傳至宿主空間。





最後點擊上傳


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