我的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
