背景介绍
项目刚起步时,maven库是搭建在部门的服务器(以下简称LOCAL)上的,但后面申请了阿里的服务器,需要在阿里服务器(以下简称ALI)上搭建自己的maven私服。
很多服务也需要做迁移,第一步则需要同步原来私服的包。
问题随即产生。
问题描述
同步包是通过代码重新deploy来实现的。
我是使用的maven是idea自带的插件,settings文件之前设置是根据LOCAL信息来填写的,所以需要切换相关配置为ALI的信息。
切换后,使用deploy来部署包到ALI,但地址一致是LOCAL。
问题原因
因为项目是有各种依赖的,而各个组件,引了共同的parent-pom。
问题就出在这里。
<pluginRepositories>
<pluginRepository>
<id>nexus-dev</id>
<url>LOCAL/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>false</enabled>
</snapshots>
</pluginRepository>
</pluginRepositories>
<repositories>
<repository>
<id>nexus-dev</id>
<name>nexus-dev</name>
<url>LOCAL/repository/maven-public/</url>
</repository>
</repositories>
<distributionManagement>
<repository>
<id>nexus-dev</id>
<name>nexus-dev</name>
<url>LOCAL/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-dev</id>
<name>nexus-dev</name>
<url>LOCAL/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
说明:其中LOCAL为具体IP,这里避免敏感,隐藏了
因为parent-pom中配置的还是原来LOCAL中的配值,所以,settings并不生效。。。
解决方法
方法一:修改parent-pom中的配置信息
方法二:直接在组件中添加相关的配置,如下:
<distributionManagement>
<repository>
<id>nexus-dev</id>
<url>ALI/repository/maven-releases/</url>
</repository>
<snapshotRepository>
<id>nexus-dev</id>
<url>ALI/repository/maven-snapshots/</url>
</snapshotRepository>
</distributionManagement>
<repositories>
<repository>
<id>nexus-dev</id>
<url>ALI/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
<updatePolicy>never</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>