我的idea出现了一个很怪异的问题,不知道为什么,只能下载jar包,却无法下载源码。 因jar相关的都在maven中配置,所以详细搞一搞maven的配置文件。
1、仓库加载顺序
1.1、两个相同级别的mirror
优先使用上面的镜像仓库,如下例子会从id为nexus的仓库中取jar包:
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://maven.*.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
1.2、指定central仓库后
即使将第二个设置为central,maven也会从mirrorOf为central的仓库取jar包:
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://maven.*.com/nexus/content/groups/public</url>
</mirror>
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<mirrorOf>central</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
1.3、配置自定义的mirrorOf
会优先使用自定义。
注意,如果私服只支持某一种jar下载(比如只支持snapshot类型的,一定要配置上可以支持另外一种下载类型,不然只能下载jar,却无法下载源码[没明白为什么会出现这个情况])
<mirrors>
<mirror>
<id>nexus-public-snapshots</id>
<mirrorOf>public-snapshots</mirrorOf>
<url>http://maven.*.com/nexus/content/repositories/snapshots/</url>
</mirror>
<mirror>
<id>nexus</id>
<mirrorOf>public</mirrorOf>
<url>http://maven.*.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>public-snapshots</id>
<repositories>
<repository>
<id>public-snapshots</id>
<url>http://public-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public-snapshots</id>
<url>http://public-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>development</id>
<repositories>
<repository>
<id>public</id>
<url>http://public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public</id>
<url>http://public</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
1.4、自定义mirror和*混用
没发现什么区别,有可能是私服的jar包够全
<mirrors>
<mirror>
<id>ALIYUN</id>
<mirrorOf>*</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<mirror>
<id>nexus-public-snapshots</id>
<mirrorOf>public-snapshots</mirrorOf>
<url>http://maven.*.com/nexus/content/repositories/snapshots/</url>
</mirror>
<mirror>
<id>nexus</id>
<mirrorOf>public</mirrorOf>
<url>http://maven.*.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
总结
1、在mirrorOf与repositoryId相同的时候优先是使用mirror的地址
2、如果私服只支持某一种jar下载(比如只支持snapshot类型的,一定要配置上可以支持另外一种下载类型,不然只能下载jar,却无法下载源码)
—没明白为什么会出现这个情况,按道理讲,如果不行都不行才对 -_-||
3、只配置mirrorOf为central的时候可以不用配置repository
maven配置文件例子
1、完全使用私服
如果相信自己私服的话,把私服配置成central,可以不配置第三方的仓库
<settings>
<mirrors>
<mirror>
<id>nexus-public-snapshots</id>
<mirrorOf>public-snapshots</mirrorOf>
<url>http://maven.*.com/nexus/content/repositories/snapshots/</url>
</mirror>
<mirror>
<id>nexus</id>
<mirrorOf>central</mirrorOf>
<url>http://maven.*.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>public-snapshots</id>
<repositories>
<repository>
<id>public-snapshots</id>
<url>http://public-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>public-snapshots</id>
<url>http://public-snapshots</url>
<releases>
<enabled>false</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>development</id>
<repositories>
<repository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<url>http://central</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>development</activeProfile>
<activeProfile>public-snapshots</activeProfile>
</activeProfiles>
<localRepository>/Users/zhqy/install/mavenDBV2</localRepository>
</settings>
2、使用阿里仓库
把阿里私服设置为central,自己的私服设置为*
<settings>
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>central</mirrorOf>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>
<mirror>
<id>nexus</id>
<mirrorOf>*</mirrorOf>
<url>http://maven.*.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<profiles>
<profile>
<id>development</id>
</profile>
</profiles>
<activeProfiles>
<activeProfile>development</activeProfile>
</activeProfiles>
<localRepository>/Users/zhqy/install/mavenDBV2</localRepository>
</settings>
关于私服对应的的配置启发来自:https://blog.csdn.net/rockstar541/article/details/77165067
maven的mirror和repository加载顺序:https://www.cnblogs.com/ctxsdhy/p/8482725.html