对于maven来说,仓库只分为两类:本地仓库和远程仓库
除了中央仓库和私服,还有很多其他公开的远程仓库,常见的有java.net Maven库(http://download.java.net/maven/2/)和jboss Maven库(http://repository.jboss.com/maven2/)等
本地仓库
编辑文件~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址
<settings>
<localRepository>D:\java\repository\</localRepository>
</settings>
中央仓库
默认的中央仓库为:http://repol.maven.org/maven2
<repository>
<id>central</id>
<url>http://repo1.maven.org/maven2/</url>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
snapshots-enabled 为false 表示不从中央仓库下载快照的构建,包含这段配置的文件是所有maven项目都会继承的超级POM.
远程仓库
很多情况下,默认的远程仓库无法满足项目的需求,可能项目需要的构件存于另一个远程仓库。修改POM文件
<repositories>
....
<
repository>
<id>central</id>
<url>http://repository.jboss.com/maven2</url>
<snapshots>
<enabled>false</enabled>
<checksumPolicy>ignore</checksumPolicy>
<updatePolicy>dalily</updatePolicy>
</snapshots>
</
repository>
...
</repositories>
<updatePolicy>配置maven从远程仓库检查更新的频率,默认为dalily(每天),never,always(每次构件都检查),interval:X(每个X分钟) <checksumPolicy>配置maven的检查策略与文件策略。默认为warn(执行构件是输出警告信息),fail(构件失败),ignore(完全忽略)
远程仓库认证
配置认证信息必须在settings.xml文件中
<servers>
...
<
server>
<id>deploymentRepo</id>
<username>repouser</username>
<password>repopwd</password>
</
server>
...
</servers>
settings.xml中server元素的id必须与POM中需要认证的repository元素的id完全一致。
部署至远程仓库,在POM中添加
<distributionManagement>
<
repository>
<id>proj-releases</id>
<name>proj-releases repository</name>
<url>http://192.168.1.100/content/repositories/pro-releases</url>
</repository>
<
snapshotRepository>
<id>proj-snapshot</id>
<name>proj-snapshot repository</name>
<url>http://192.168.1.100/content/repositories/pro-snapshot</url>
</snapshotRepository>
</distributionManagement>
<repository>元素表示发布版本仓库,
<snapshotRepository>表示快照版本仓库
通过
mvn deploy命令发布构件
镜像
如果仓库X可以提供仓库Y的所有内容,那么就可以认为X是Y的一个镜像
在settings.xml 中的mirror中配置
<mirrors>
<mirror>
<id>maven.net.cn</id>
<mirrorOf>central</mirrorOf>
<name>one of the central mirros in china</name>
<url>http://maven.net.cn/content/groups/public/</url>
</mirror>
</mirrors>
<
mirrorOf>值为central,表示该配置为中央仓库的镜像,对于任何中央仓库的请求都会转至该请求。
镜像最常见的用法是结合私服
<mirror>
<id>internal-repository</id>
<mirrorOf>*</mirrorOf>
<name>one of the central mirros in china</name>
<url>http://192.168.1.100/maven2</url>
</mirror>
<mirrorOf>*</mirrorOf>匹配所有远程仓库
<mirrorOf>external:*</mirrorOf>配置所有不在本机的远程仓库
<mirrorOf>rep1,rep2</mirrorOf>配置仓库rep1,rep2
<mirrorOf>*,!rep1</mirrorOf>配置所有远程仓库,rep1除外