是否可以将POM(而非广告罐)重新定位到新的groupId
和artifactId
?我能够使用重定位POM重定位jar,但无法重新定位我们用于进行依赖关系管理的POM。
答案 0 :(得分:1)
以下内容来自docs:
为Maven 2存储库中每个旧版本的foo创建一个最小的Maven pom文件。 pom文件只需要包含groupId,artifactId,version和重定位部分。
注意:在使用这些最小的pom文件替换/ bar / foo /中的旧pom文件之前,请确保已进行备份!
对于foo的1.0版本,最小的pom文件可能如下所示:
<project>
<modelVersion>4.0.0</modelVersion>
<groupId>bar</groupId>
<artifactId>foo</artifactId>
<version>1.0</version>
<distributionManagement>
<relocation>
<groupId>org.bar</groupId>
</relocation>
</distributionManagement>
</project>
在这种情况下,我们正在重新定位,因为groupId已更改。我们只需要将已更改的元素添加到重定位元素。有关重定位元素中允许哪些元素的信息,请参阅pom参考。
如果您的项目使用MD5或SHA1校验和,您现在必须为Maven存储库中/ bar / foo /中的pom文件创建新的校验和。如果需要签署pom文件,也可以这样做。
如果您的项目与中心同步,您现在应该启动该同步。这可能会自动发生,具体取决于您的项目同步策略。
您的foo-artifacts现在可供Maven用户使用,包含旧的和新的groupId。使用旧groupId的项目将自动重定向到新的groupId,并将发出警告,告知用户更新其依赖项。 发布下一个版本
当下一个foo版本发布时,你应该发布两个Maven pom文件。首先,您应该使用新的groupId org.bar发布一个pom。
由于存储库中的数据不应更改,因此Maven不会下载已下载的pom文件。因此,您还需要为新版本发布带有旧groupId栏的pom文件。这应该是一个最小的重定位pom(如上面的步骤4所述),但是对于新版本的foo。
对于之后的版本,您只需要发布一个groupId为org.bar的Maven pom,因为之前版本的用户已被告知已更改的groupId。