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