仓库分为两类,本地仓库,远程仓库。它们存储项目的依赖,插件。
当项目添加相关依赖之后,首先在本地仓库中查找,若找不到,则到远程仓库查找,找到之后,会下载到本地,并根据相关的配置项决定更新策略。若无法找到,则抛错。 默认情况下,安装时,会在下创建.m2/repo<s目录,并将此作为本地仓库地址,可以在中编辑来自定义本地仓库地址
<localRepository>local Repository path</localRepository>
默认情况下,super-pom中定义了远程仓库地址,可以使用mvn help:effective-pom查看默认的远程仓库地址。有两种方式可以自定义远程仓库地址
第一种方式,在setting.xml中配置mirrors或server。示例如下
<mirror> <id>aliyun</id> <name>阿里云</name> <mirrorOf>central</mirrorOf> <url>http://maven.aliyun.com/nexus/content/groups/public</url> </mirror>
也可以在profile中配置repositories和pluginReposities, 示例如下:
<profiles> <!-- 配置一组插件仓库和远程仓库--> <profile> <id>repo_name</id> <!-- repositories --> <repositories> </repositories> <!-- pluginRepositories --> <pluginRepositories> </pluginRepositories> <profile> <!-- 激活repo_name 配置项--> <activeProfiles> <activeProfile>repo_name</activeProfile> </activeProfiles> </profiles>
第二种方式,在项目的pom.xml中,配置repositories和pluginRepositories
<repository> <id>nexus-aliyun</id> <name>Nexus aliyun</name> <layout>default</layout> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> <checksumPolicy>fail</checksumPolicy> <!-- 每天检查,自动更新jar包,在实际中不要设置 --> <updatePolicy>daily</updatePolicy> </releases> </repository>
l name || id:id与name都是仓库的标识,区别是id具有唯一性
l snapshots:依赖的Jar或插件有快照版和发布版两种, snapshots为快照版,它用于配置快照版相关的更新策略。enabled设置为false时,指本地仓库不会从远程仓库中下载快照版本,剩余的配置项只有在enabled为true时才有意义。
l releases:对应发布版,
1. updatePolicy指更新策略,它有四种值, daily表示每天更新;always表示实时更新,即远程仓库有新版本发布时,即更新;interval:X表示定时监测更新,X为大于0的整数,它的单位是分钟; never表示从不更新。
2. checksumPolicy:个人理解,当本地仓库下载完成之后,它会校验,得出一个数值,并与远程进行比较,若不同,表示数据不完整。它有三种值,fail表示若不同时,下载失败;ignore表示若不同时,忽略,通常不建议;warn表示警告。
pluginRepositories与repositories的子标签元素是相同的。
当同时在setting.xml,super-pom.xml,pom.xml中配置了仓库时,它们的优先级如下:
setting.xml具有最高的优先级,子pom具有最高优先级,即super-pom.xml具有最低优先级。