標籤:存在 name 下載 版本 分配 檔案引入 always type director
使用nexus搭建區域網路私服一. 認識maven倉庫1.1 maven倉庫的作用
回想之前不用maven的時候,我們用eclipse原始的項目骨架構建項目時,在工程目錄下往往有一個lib檔案夾用來存放工程所需jar檔案,每次建一個新工程時都會有這樣一個lib檔案夾。然後將jar複製進lib檔案夾配置路徑,很顯然有大量的重複工作,而且不同項目所用jar包不盡相同,需要我們慢慢去分辨。而後我們用了專案管理工具比如svn或者git,我們需要把把大量的jar檔案引入程式碼程式庫,這也不是一件很合適的事。
而maven能夠幫我們解決這些問題,maven倉庫是專門用來存放jar檔案的位置(也可以用來存放項目war,zip,pom等檔案)。maven倉庫中為每個jar檔案分配了一個座標,比如jstl的jar包:
<groupId>javax.servlet</groupId> 組ID<artifactId>jstl</artifactId> 構建ID... 其餘屬性後續介紹
這樣做的話,maven能很方便的進行項目依賴版本的控制。簡單說maven倉庫就是幫我們統一管理項目構件。
1.2 maven倉庫分類
項目構建的查詢路徑:首先查詢本地倉庫,未找到就會查詢中央倉庫,沒找到就會報錯。中央倉庫地址有:
- http://www.sonatype.org/nexus/ 私服nexus用
- http://mvnrepository.com/ 推薦使用
- http://repo1.maven.org/maven2
上面三個是較為常見的,也是項目中使用較多的,但是由於下載速度太慢,並且倉庫的jar檔案不完整,實際企業開發需要我們搭建私服倉庫。
二. 安裝使用nexus
這裡注意搭建maven私服不僅僅只有這一種工具。博主用的版本是nexus-2.12.0。
- 點擊下載,密碼: 1ar1
- 下載完成後解壓即可,解壓完成到目錄nexus-2.12.0-01-bundle\nexus-2.12.0-01\bin\jsw下可以看到:
- 博主電腦是64位所以開啟最後一個檔案夾:
- 點擊第二個bat檔案設定為windows服務,開啟nexus後訪問網址: http://localhost:8081/nexus/啟動後開啟如下頁面,即代表nexus安裝並啟動成功。
三. 配置maven私服
- 點擊右上方Login登陸,初始帳號為admin,密碼是admin123 登陸成功可修改帳號密碼,自己找。
- 點擊左邊的導航Respositories。
可以看到預設有一些倉庫,倉庫類型Type的意義:
- hosted 宿主倉庫,用來發布一些第三方不允許的組件,比如oracle驅動等商業軟體的jar包
- proxy 代理遠端倉庫,比如上面寫得三個maven遠程倉庫。如果本地不存在某些jar檔案時就會到這些代理網站去下載。
- releases 內部的模組中release模組的發布倉庫
- snapshots 發布內部的snapshot模組的倉庫
- 3rd party 第三方依賴的倉庫,本地上傳jar包後使用
- group 組倉庫,用來添加其他的倉庫,方便開發人員設定
開始搭建私服倉庫,值得注意的是:maven項目索引:maven項目索引就是用來方便在私服網站尋找相關依賴構建的功能。所以在搭建私服之前,應該下載maven索引,大概幾十M:
將Download Remote Indexs屬性改成True,然後點擊save即可,可以在功能表列Scheduled Tasks查看下載索引的進度。
3.添加自己代理的遠程庫,有時候我們的項目需要引入一些特殊的jar檔案,比如Jboss的某些jar包,這時候也可以在私服中代理該遠程倉庫:
點擊add後添加代理類型,依次填寫id,name和url,這樣的話,在項目中不再需要配置遠程倉庫:
<repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2/</url> <releases> <updatePolicy>daily</updatePolicy><!-- never,always,interval n --> <enabled>true</enabled> <checksumPolicy>warn</checksumPolicy><!-- fail,ignore --> </releases> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout></repository>
4.宿主倉庫的使用,上面提到的一些特殊的商業性質相關的jar檔案,比如oracle的驅動包,ojdbc.jar並不支援遠程下載,這時候可以將我們本地下載好的jar包上傳到私服。
注意GAV設定要與你pom.xml中一致,上傳後添加到Artifacts點擊上傳即可:
5.由於私服倉庫數量過多,導致配置複雜度提高,所以需要用到上述的group類型倉庫:
切記點擊重新整理,重新整理後點擊唯一的一個group倉庫,點擊配置Configuration就可以看到剛才我們手動添加的代理倉庫,然後將代理倉庫添加到組倉庫,這樣依賴,項目中之需要配置組倉庫的url就可以訪問多個私服倉庫。
四. 區域網路使用maven私服4.1 單個項目使用maven私服
在上述步驟完成後,即可在項目中引用私服,pom.xml中改變預設下載倉庫url:
指定私服倉庫,我的ip是170,不要全盤複製
<repositories> <repository> <id>nexus</id> <name>nexus</name> <url>http://192.168.1.170:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
指定外掛程式倉庫
<pluginRepositories> <pluginRepository> <id>nexus</id> <name>nexus</name> <url>http://192.168.1.170:8081/nexus/content/groups/public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </pluginRepository> </pluginRepositories>
配置好之後就可以從私服下載依賴包了。但是這種方式只能在改項目中起作用,每次設定項目都需要寫兩遍,為了將懶人模式進行到底,我們還可以指定全域的私人倉庫。
4.2 全域指定私服
找到maven檔案的中的setting.xml檔案
在setting.xml中添加配置:
在<profiles>標籤下添加
<profile> <repositories> <id>central</id> <name>central</name> <url>http://192.168.1.170:8081/nexus/content/groups/public/</url> <layout>default</layout> <releases> <enabled>true<enabled> </releases> <snapshots> <enabled>true<enabled> </snapshots> </repositories></profile>
配置好之後啟用profile
<activeProfiles> <activeProfile>central</activeProfile> </activeProfiles>
這樣一來,這台電腦上所有maven項目下載jar檔案時都會先訪問區域網路170的電腦。
-----------------------------------windows配置私服完畢-----------------------------------
擴充:setting,xml中各標籤的意義:
1.servers(伺服器)
<servers> <server> <id>server001</id> <username>my_login</username> <password>my_password</password> <privateKey>${usr.home}/.ssh/id_dsa</privateKey> <passphrase>some_passphrase</passphrase> <filePermissions>664</filePermissions> <directoryPermissions>775</directoryPermissions> <configuration></configuration> </server></servers>
id與pom.xml中distributionManagement的id保持一致,伺服器標識
username和password表示伺服器認證需要的使用者民和密碼
privateKey, passphrase一組密鑰 (不常用)
filePermissions, directoryPermissions如果在部署的時候會建立一個倉庫檔案或者目錄,這時候就可以使用許可權(不常用)
2.mirrors(鏡像)
<mirrors> <mirror> <id>planetmirror.com</id> <name>PlanetMirror Australia</name> <url>http://downloads.planetmirror.com/pub/maven2</url> <mirrorOf>central</mirrorOf> </mirror></mirrors>
設定一個中央倉庫的鏡像,看倉庫分類,也是遠程倉庫的一種配置方式。
3.profiles(構建環境)
這個可能比較難理解,maven權威指南一書中這樣說:
Profile能讓你為一個特殊的環境自訂一個特殊的構建;
構建環境的兩個例子是產品環境和開發環境。當你在開發環境中工作時,你的系統可能被配置成訪問運行在你原生開發資料庫執行個體,而在產品環境中,你的系統被配置成從產品資料庫讀取資料。Maven能讓你定義任意數量的構建環境(構建profile),這些定義可以覆蓋pom.xml中的任何配置。
簡單理解就是你可以先profile中先構件好項目啟動並執行環境,比如預設了A環境實在開發中使用,而實際上線是B環境,那麼在上線的時候我們不需要一個個修改pom.xml中的配置,只需要啟用改profile即可。
4.activation(啟用構建環境 )
<activation> <activeByDefault>false</activeByDefault> <jdk>1.5</jdk> <os> <name>Windows XP</name> <family>Windows</family> <arch>x86</arch> <version>5.1.2600</version> </os> <property> <name>mavenVersion</name> <value>2.0.3</value> </property></activation>
指定profile中配置的環境在什麼時候開始生效
5.activeProfiles(啟用了的profile)
<activeProfiles><activeProfile>env-test</activeProfile></activeProfiles>
在setting.xml最後的一個標籤,表示env-test這個profile已被啟用
以上單純代表博主個人看法,如有理解錯誤或者疑問請拍磚指教。
參考資料:《Maven權威指南》 ,Maven學習 (四) 使用Nexus搭建Maven私服
maven倉庫--搭建區域網路私服(windows版)