maven倉庫分類apache
本地倉庫、遠程倉庫。遠程倉庫又有私服、中央倉庫、其它公共庫。中央倉庫是maven自帶的核心倉庫。maven
倉庫配置
遠程倉庫能夠配置多個,超級pom中定義的中央倉庫佈局
<repositories> <repository> <id>central</id> <name>Central Repository</name> <url>https://repo.maven.apache.org/maven2</url> <layout>default</layout> <snapshots> <enabled>false</enabled> </snapshots> </repository> </repositories>
如下是jboss遠程倉庫配置this
<repositories> <repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <checksumPolicy>warn</checksumPolicy> </snapshots> <layout>default</layout> </repository> </repositories>
layout標籤:使用default倉庫佈局,倉庫佈局就是構件在倉庫中的存儲路徑,默認的構件倉庫路徑如com\juvenxu\mvnbook\hello-world\1.0-SNAPSHOT。maven二、maven3的佈局同樣,maven1和他們不同。url
<snapshots><enabled>false</enabled></snapshots>:不從該倉庫下載快照版本,即不穩定版本SNAPSHOT。
updatePolicy 從遠程倉庫檢查更新的頻率,默認值爲daily,天天更新一次;never,從不檢查;always,每次構建都檢查;interval:X,每間隔X分鐘檢查一次更新。X爲任意整數。
checksumPolicy 忽略spa
maven的setting.xml不支持直接配置repositories和pluginRepositories。所幸maven還提供了profile機制,能讓用戶將倉庫配置放到setting.xml 中的profile裏,以下:插件
<profiles> <profile> <id>nexus</id> <repositories> <repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <checksumPolicy>warn</checksumPolicy> </snapshots> <layout>default</layout> </repository> </repositories> <pluginRepositories> <pluginRepository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <checksumPolicy>warn</checksumPolicy> </snapshots> <layout>default</layout> </pluginRepository> </pluginRepositories> </profile> </profiles> <activeProfiles> <activeProfile>nexus</activeProfile> </activeProfiles>
當執行maven構建的時候,激活的profile會將倉庫配置應用到項目中去。命令行
maven會區別對待依賴的遠程倉庫與插件遠程倉庫代理
插件的倉庫使用pluginRepositories來配置,除了pluginRepositories和pluginRepositorie標籤不一樣以外,其他全部子元素和配置依賴倉庫徹底同樣。code
私服不是maven的核心概念,它是一種衍生出來的特殊的maven倉庫。
maven官方區別依賴倉庫和插件倉庫,雖然id、url全部的元素值都相同;nexus的 maven-central 代理倉庫不區別依賴倉庫和插件倉庫,從這裏便可如下載普通依賴,也能夠下載maven插件。
配置鏡像
settings文件
<mirror> <id>alimaven</id> <name>aliyun maven</name> <url>http://maven.aliyun.com/nexus/content/groups/public/</url> <mirrorOf>central</mirrorOf> </mirror>
該mirrorOf的值爲central,表示該配置爲中央倉庫鏡像,任何對於中央倉庫的請求都會轉至此鏡像。
另外三個元素與通常倉庫配置無異,表示該鏡像倉庫的惟一標識符、名稱及地址。
鏡像一個更常見的用法是結合私服。由私服代理外部的公共倉庫,本地配置鏡像至私服以下。
<mirror>
<id>maven-nexus</id>
<name>this is my nexus</name>
<url>http://localhost:8081/repository/maven-nexus/</url>
<mirrorOf>*</mirrorOf>
</mirror>
<mirrorOf>*</mirrorOf> 表示該配置是全部Maven倉庫的鏡像,對於全部遠程倉庫的請求都會被轉移到http://
<mirrorOf>external:*</mirrorOf> 匹配全部遠程倉庫,除localhost、file://協議。
<mirrorOf>repo1,repo2</mirrorOf> 匹配倉庫1和倉庫2
<mirrorOf>*,!repo1</mirrorOf> 匹配全部遠程倉庫,repo1除外。
因爲鏡像倉庫徹底屏蔽了被鏡像倉庫,當鏡像倉庫不穩定或者中止服務的時候,maven將沒法訪問被鏡像倉庫,沒法下載構件。
部署構件至遠程倉庫
編輯pom文件
<distributionManagement> <repository> <id></id> <name></name> <url></url> </repository> <snapshotRepository> <id></id> <name></name> <url></url> </snapshotRepository> </distributionManagement>
repository表示發佈版本構件的倉庫,後者表示快照版本構件的倉庫。
配置後,在命令行運行mvn clear deploy,若是當前項目是快照版本,就部署到快照版本倉庫,反之部署到發佈版本倉庫。
私服、遠程倉庫、鏡像若是須要認證,配置方法都同樣。基於倉庫或鏡像id配置便可。
認證信息必須配置在settings.xml文件中
<servers> <server> <id>releases</id> <username>admin</username> <password>admin123</password> </server> <server> <id>snapshots</id> <username>admin</username> <password>admin123</password> </server> </servers>
這裏的id必須和須要認證的倉庫或鏡像的id同樣。