专栏首页ZNing·腾创库关于更换Maven国内镜像的经验总结

关于更换Maven国内镜像的经验总结

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

最近需要编译flink-1.9.0flink-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>表示此为中央仓库的代理。

本文分享自微信公众号 - 慧响(withounder),作者:ZNing 张宁

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-06-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于更换Maven国内镜像的经验总结

    最近需要编译flink-1.9.0和flink-shaded,由于网上所给信息是,在编译时需要在两个工程内设置非中央仓库的官方镜像源。对于更换Maven国内镜像...

    ZNing
  • 技术角 | “源产控”系列(一)CentOS 8之初相识

    作者按:当下国内外软件开发领域,开源队伍的壮大趋势随着微软收购Github达到了新的高度,众多业界巨头例如Google、Facebook、IBM、Oracle、...

    ZNing
  • 【腾讯云的1001种玩法】关于Web服务器Nginx反向代理GitHub Page的一点思考(bash脚本)

    1 背景今天处理了下放在腾讯云的网站的服务器的一个小问题。由于我把简历放在了GithubPage上了,但是本人又不甘心只能墙外人看到,因此就通过墙内腾讯云服务器...

    ZNing
  • 关于更换Maven国内镜像的经验总结

    最近需要编译flink-1.9.0和flink-shaded,由于网上所给信息是,在编译时需要在两个工程内设置非中央仓库的官方镜像源。对于更换Maven国内镜像...

    ZNing
  • 如何选购及管理腾讯云 MySQL 数据库

    如何选购及管理腾讯云 MySQL 数据库?有了腾讯云计算作为基础,我们可以把这些复杂的底层操作交给云计算去完成,而我们只要集中精力去实现业务就可以了。

    用户6641189
  • 如何选购及管理腾讯云 MySQL 数据库

    如何选购及管理腾讯云 MySQL 数据库?有了腾讯云计算作为基础,我们可以把这些复杂的底层操作交给云计算去完成,而我们只要集中精力去实现业务就可以了。

    魏艾斯博客www.vpsss.net
  • mysql由于临时表导致IO过高的性能优化过程分享

    线上mysql数据库爆出一个慢查询,DBA观察发现,查询时服务器IO飙升,IO占用率达到100%, 执行时间长达7s左右。

    林老师带你学编程
  • 解决appium升级后不支持使用name定位的问题

    之前一直用的appium1.4版本,最近升级到了1.6突然发现之前的脚本好多都跑失败了,一看报错:

    测试开发社区
  • 优化临时表使用,SQL语句性能提升100倍

    【问题现象】 线上mysql数据库爆出一个慢查询,DBA观察发现,查询时服务器IO飙升,IO占用率达到100%, 执行时间长达7s左右。 SQL语句如下: SE...

    小小科
  • Django进阶篇 Rest framework (五)

    使用 pycharm 作为集成开发工具,创建 django 项目查看 Python 和第三方库源码很方便,使用 pycharm 创建一个 django 项目,然...

    小团子

扫码关注云+社区

领取腾讯云代金券