背景
由于接了东南亚的项目,基础代码还是一套,所以代码需要发版时需要发布到两个私服仓库的地址
思路
利用maven的profile标签
一个setting.xml配置两套环境
如果是IDEA的话 可以手动选择使用哪个profile
也可以在命令行中:
mvn deploy -P profileName
只不过每次发布的时候 需要修改pom文件中的url
<distributionManagement>
<repository>
<id>asia-releases</id>
<name>Nexus Release Repository</name>
<url>http://test1/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>asia-snapshots</id>
<name>Nexus Snapshot Repository</name>
<url>http://test1/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
问题
1、两个仓库有不同的镜像地址
镜像匹配 mirrorOf 规则
* = everything
external:* = everything not on the localhost and not file based.
repo,repo1 = repo or repo1
*,!repo1 = everything except repo1
所以在setting.xml文件中需要
<mirrors>
<mirror>
<id>asia-nexus</id>
<name>aisa nexus repository</name>
<mirrorOf>*,!inland-nexus</mirrorOf>
<url>http://test1/repository/maven-public/</url>
</mirror>
<mirror>
<id>inland-nexus</id>
<name>inland nexus repository</name>
<mirrorOf>*,!asia-nexus</mirrorOf>
<url>https://test2/repository/public/</url>
</mirror>
</mirrors>
mirrorOf中的名字就是我们在repository定义的id,配置如下
<profile>
<id>wecash-asia-nexus</id>
<repositories>
<repository>
<id>asia-nexus</id>
<url>http://test1/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>