maven 中配置多个mirror的问题

有个小伙伴遇到一个疑问:他的工作笔记本,在公司用部门搭建的maven私服做镜像,回到家用aliyun的镜像,每次都要改配置文件,很麻烦,希望能够不改动配置文件的情况下,动态切换mirror配置。

我们知道 settings.xml 中可以使用变量,可以尝试使用变量解决。

<mirrors>
    <mirror>
        <id>aliyun</id>
        <url>https://maven.aliyun.com/repository/public</url>
        <mirrorOf>${aliyun}</mirrorOf>
    </mirror>
    <mirror>
        <id>netease</id>
        <url>http://mirrors.163.com/maven/repository/maven-public/</url>
        <mirrorOf>${netease}</mirrorOf>
    </mirror>
    <mirror>
        <id>default</id>
        <url>http://192.168.0.100/nexus/repository/maven-public/</url>
        <mirrorOf>central</mirrorOf>
    </mirror>
</mirrors>

我们知道,默认情况下配置多个mirror的情况下,只有第一个生效。那么我们可以将最后一个作为默认值,前面配置的使用环境变量动态切换。

默认情况下,执行: mvn help:effective-settings 可以看到使用的是私服。

如果希望使用阿里云镜像,如下执行:

mvn help-effective-settings -Daliyun=central`

同样的道理,使用网易镜像,则执行:

mvn help:effective-settings -Dnetease=central

测试无误。

如果在eclipse中,需要修改运行脚本的参数。

maven 中配置多个mirror的问题