Maven3倉庫與配置
mavne倉庫
maven的倉庫分為兩類:本地倉庫和遠程倉庫,當maven在按照坐標查找構建或插件時,會先在本地倉庫查找,能找到就會直接使用本地倉庫的構建或插件;當沒找到對應的構建或插件或者需要查看更新時,才會去遠程倉庫查找,找到后會下載到本地,沒找到會報錯。
maven的本地倉庫
maven的本地倉庫位置默認在用戶目錄下的.m2/repository,可以通過配置settings.xml中的
<settings> ... <localRepository></localRepository> ... </settings>
配置本地倉庫到其他位置,需要注意的是,要使settings.xml中的配置生效,在IDE中必須指定settings.xml位置;若在命令行中使用,默認會使用maven_home目錄下config中的settings.xml,可以使用-s指定要使用的settings.xml文件的位置。
maven的遠程倉庫
maven的遠程倉庫又分為公開的倉庫(如默認的中央倉庫、java.net Maven庫、JBoss Maven庫等)和私服(一般為公司局域網中使用,節約流量,便于管理,加速構建,常見的可以使用nexus這個開源項目來快速搭建)
maven的遠程倉庫配置
maven的遠程倉庫配置可以在pom.xml中或settings.xml中完成,pom.xml文件用來設置當前項目的配置項,如果有配置其他模塊或其他項目會復用,可以在settings.xml中配置或者使用繼承來實現配置的復用;settings.xml適合用來配置一些所有maven項目都會公用的配置信息,比如:maven構建以及插件的下載地址、maven的鏡像、maven代理等
<repositories> <repository> <id>maven.oschia.net</id> <name>oschina maven repository</name> <url>http://maven.oschina.net/content/groups/public/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </snapshots> <layout>default</layout> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>maven.oschina.net</id> <name>oschina maven repository</name> <url>http://maven.oschina.net/content/groups/public/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> <checksumPolicy>ignore</checksumPolicy> </releases> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout> </pluginRepository> </pluginRepositories>
repositories元素下可以配置多個repository,每個repository表示一個遠程倉庫,repository下面的元素如下
-
id,每個repository需要一個唯一的id,如果id相同后面的配置會覆蓋前面的配置,如maven的超級pom.xml(解壓${M2_HOME}/lib/maven-model-builder-3.0.4.jar,在解壓出來的目錄的/org/apache/maven/model/pom-4.0.0.xml)中配置了maven的中央倉庫,id為central,我們可以通過配置相同id覆蓋中央倉庫配置;
-
name,用于描述這個倉庫
-
releases,enabled:true或false;updatePolicy:更新頻率never-從不,always-每次構建都檢查,daily-每天(默認),inerval:x-每隔x分鐘;checksumPolicy:用來配置文件校驗和策略,當勾踐被部署到遠程倉庫會同時生成一個校驗和文件,在下載構件時檢查校驗和,warn-校驗失敗輸出警告(默認),fail-校驗失敗構建失敗,ignore-忽略
-
snapshots 同上
-
layout,布局默認為default
pluginRepositories情況與上面基本一致。
部署倉庫配置
私服可以用于部署第三方構件,需要在pom.xml文件中如下配置:
<distributionManagement> <repository> <id>project-release</id> <name>release repository</name> <url></url> </repository> <snapshotRepository> <id>project-snapshot</id> <name>snapshot repository</name> <url></url> </snapshotRepository> </distributionManagement>
repository用來配置release版本的部署倉庫,snapshotRepository用于配置snapshot版本的部署配置
倉庫認證
在從倉庫下載構建或者部署構件到倉庫時,可以開啟賬號密碼認證,只有擁有正確的賬號密碼的才可以使用,這是需要在settings.xml文件中配置認證信息,如下:
<settings> ...... <servers> <server> <id>mapping repository id</id> <username></username> <password></password> </server> </servers> ...... </settings>
來自:http://my.oschina.net/u/1413049/blog/519543