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