maven仓库分为本地仓库、远程仓库。
项目引用依赖时,先从本地仓库按照坐标查找,如果没有找到则到远程仓库查找,如果还没有就报错。
设定本地仓库
修改setting.xml文件配置,自定义本地仓库路径。本地仓库只有一个。
<localRepository>/path/to/local/repo</localRepository>
设定远程仓库
修改pom.xml文件配置。远程仓库可以有多个。
id为远程仓库的唯一标识,如果将自定义远程仓库id设为central,则会将默认的远程仓库覆盖。
releases表示发布版本构件。
snapshots表示快照版本构件。
enabled开启状态。
updatePolicy表示maven从远程仓库检查更新的频率。
checksumPolicy表示检验设定。如果值为ignore则完全忽略校验和错误。如果值为warn则maven遇到校验和错误就让构建失败。
1<repository> 2 <id>iSkyCode</id> 3 <name>iSkyCode</name> 4 <url></url> 5 <layout>default</layout> 6 <releases> 7 <enabled>false</enabled> 8 <updatePolicy>daily</updatePolicy> 9 <checksumPolicy>ignore</checksumPolicy> 10 </releases> 11 <snapshots> 12 <enabled>false</enabled> 13 <updatePolicy>daily</updatePolicy> 14 <checksumPolicy>ignore</checksumPolicy> 15 </snapshots> 16</repository>
免费远程仓库
Sonatype Nexus repository.sonatype.org
MVNrepository mvnrepository.com
阿里巴巴 maven.aliyun.com
Jboss repository.jboss.com
* maven.ibiblio.org
默认中央仓库
repo1.maven.org
中央仓库认证
认证信息需要配置在setting.xml配置文件中。
1<settings> 2 <servers> 3 <server> 4 <id>iSkyCode</id> 5 <username>repo-user</username> 6 <password>repo-pwd</password> 7 </server> 8 </servers> 9</settings>
发布构件
1<distributionManagement> 2 <repository> 3 <id>iSkyCode-releases</id> 4 <name>releases-repo</name> 5 <url></url> 6 </repository> 7 <snapshotRepository> 8 <id>iSkyCode-snapshot</id> 9 <name>snapshot-repo</name> 10 <url></url> 11 </snapshotRepository> 12</distributionManagement>
镜像
A仓库可以提供B仓库存储的所有内容,则A称为B的镜像。
如果在setting中指定A为B的镜像,则所有B的访问都会被指向A。
mirrorOf指定了镜像的源仓库。
1<settings> 2 <mirrors> 3 <mirror> 4 <id>repo</id> 5 <name>one of the central mirrors</name> 6 <url></urs> 7 <mirrorOf>central</mirrorOf> 8 </mirror> 9 </mirrors> 10</settings>
拓展配置
匹配所有远程仓库。
<mirrorOf>*</mirrorOf>
匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。即所有不在本机的远程仓库。
<mirrorOf>external:*</mirrorOf>
匹配多个仓库,使用逗号分隔。
<mirrorOf>repo1,repo2,repo3</mirrorOf>
匹配所有远程仓库,某个仓库除外。
<mirrorOf>*,!repo1</mirrorOf>
注意:仓库设置镜像以后,只会访问镜像仓库。如果镜像仓库停止服务,也不会自动访问被镜像的仓库。
仓库搜索服务
Sonatype Nexus
MVNbrowser
MVNrepository