一、几个概念简单理解
mirror、repository
例如:我的配置如下:
<mirrors>
<mirror>
<id>alimaven</id>
<mirrorOf>alimaven</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
</mirrors>
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://测试链接</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
mirror标签中的mirrorOf设置为:alimaven,那么我的maven项目拉包的时候,就会把id为alimaven的repository的url,映射为:http://maven.aliyun.com/nexus/content/groups/public;
大家可以理解,mirror标签相当于个拦截器,会替换配置的repository;也可以理解为配置了相应repository的mirror,mirror就会生效。
profile标签
主要就是通过profile配置达到灵活切换远程仓库
servers
servers标签,如果,你的repository需要一些账号密码配置,就写到这里。
例如:
<servers>
<server>
<id>alimaven</id>
<username>test</username>
<password>test</password>
</server>
</servers>
就表示,repository仓库id为alimaven,需要账号:test,密码:test
配置demo
之间上代码示范:
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<localRepository>/Users/ningfucheng/.m2/repository</localRepository>
<pluginGroups></pluginGroups>
<proxies></proxies>
<servers>
<server>
<id>huaweicloud</id>
<username>anonymous</username>
<password>devcloud</password>
</server>
</servers>
<mirrors>
<!-- <mirror>
<id>alimaven</id>
<mirrorOf>alimaven</mirrorOf>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror> -->
</mirrors>
<profiles>
<profile>
<id>aliyun</id>
<repositories>
<repository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
<profile>
<id>huawei</id>
<repositories>
<repository>
<id>huaweicloud</id>
<name>huawei maven</name>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
<layout>default</layout>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>huaweicloud</id>
<name>huawei maven</name>
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
</settings>
这里我的mirror注释掉了,因为不设置
然后在idea上的效果
大家可以这样子勾中切换不同的repository源,这里只是demo,更多repository配置也可以这样弄。
我踩了个坑
之前也是看了其他blog,有些配置了
<activeProfiles>
<activeProfile>aliyun</activeProfile>
</activeProfiles>
在setting.xml文件中,如果这样子配置,那么在idea上,不管你怎么勾选profile,拉取的repository都是aliyun的。
因为idea其实是 -P aliyun 这样子或者-P huawei去切换profile,但是如果你在setting.xml文件中已经指定activeProfile,setting.xml文件中的profile优先级最高!!!注意各位