maven可以同时配置多个镜像地址(关于更换Maven国内镜像的经验总结)

点击上方“慧响” 可以订阅哦,我来为大家科普一下关于maven可以同时配置多个镜像地址?下面希望有你要的答案,我们一起来看看吧!

maven可以同时配置多个镜像地址(关于更换Maven国内镜像的经验总结)

maven可以同时配置多个镜像地址

点击上方“慧响” 可以订阅哦!

本文字数:1366字

阅读时间:3分钟

最近需要编译flink-1.9.0和flink-shaded,由于网上所给信息是,在编译时需要在两个工程内设置非中央仓库的官方镜像源。对于更换Maven国内镜像有一定的经验总结。本文以阿里云为例,其他镜像源——比如腾讯云——也是可以使用的。

最近需要编译flink-1.9.0和flink-shaded,由于网上所给信息是,在编译时需要在两个工程内设置非中央仓库的官方镜像源(flink-1.9.0已经自带)。

<profile> <id>vendor-repos</id> <activation> <property> <name>vendor-repos</name> </property> </activation> <!-- Add vendor maven repositories --> <repositories> <!-- Cloudera --> <repository> <id>cloudera-releases</id> <url>https://repository.cloudera.com/artifactory/cloudera-repos</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>false</enabled> </snapshots> </repository> <!-- Hortonworks --> <repository> <id>HDPReleases</id> <name>HDP Releases</name> <url>https://repo.hortonworks.com/content/repositories/releases/</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> <repository> <id>HortonworksJettyHadoop</id> <name>HDP Jetty</name> <url>https://repo.hortonworks.com/content/repositories/jetty-hadoop</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> <!-- MapR --> <repository> <id>mapr-releases</id> <url>https://repository.mapr.com/maven/</url> <snapshots> <enabled>false</enabled> </snapshots> <releases> <enabled>true</enabled> </releases> </repository> </repositories> </profile>

由于Maven本身是连接的apache.org的中央仓库镜像源,因此我在网上找到了阿里镜像源进行更换。其中教程一与二给的更换镜像源XML配置如下:

<mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云谷歌仓库</name> <url>https://maven.aliyun.com/repository/google</url> </mirror> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云阿帕奇仓库</name> <url>https://maven.aliyun.com/repository/apache-snapshots</url> </mirror> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云spring仓库</name> <url>https://maven.aliyun.com/repository/spring</url> </mirror> <mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云spring插件仓库</name> <url>https://maven.aliyun.com/repository/spring-plugin</url> </mirror> </mirrors>

但是在更改后,我发现编译失败,说是在阿里云仓库找不到需要在我文章开头设置的仓库里找的包。但是我明明在工程的pom.xml里设置了四个非中央的官方仓库了呀?

后来又搜了两篇阿里云教程设置,我发现其XML配置为:

<mirrors> <mirror> <id>aliyunmaven</id> <mirrorOf>central</mirrorOf> <name>aliyun maven</name> <url>https://maven.aliyun.com/repository/public </url> </mirror> </mirrors>

其中,<mirrorOf>central</mirrorOf>同之前的仓库设置是不一样的,之前是*,现在是central。据此,我分析,由于通配符的问题,Maven全局的Settings.xml文件,将我工程内pom.xml设置的四个非中央官方仓库的设置给一并覆盖了,导致失效,从而无法让工程从应有的位置拉取依赖包,导致编译失败。

经过修改之后,flink-shaded工程目前编译已正常通过。确认是这个问题。因此我们可以知道的是:

  • 若设置了<mirrorOf>*</mirrorOf>这个标签,则可能会导致工程内pom.xml相应设置的仓库失效。全局设置覆盖了工程设置。
  • 应避免直接设置<mirrorOf>*</mirrorOf>这个标签,而是设置指定仓库例如<mirrorOf>central</mirrorOf>表示此为中央仓库的代理。
,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页