Maven pom搬迁

时间:2015-03-05 15:39:51

标签: maven

Maven POM搬迁

是否可以将POM(而非广告罐)重新定位到新的groupIdartifactId?我能够使用重定位POM重定位jar,但无法重新定位我们用于进行依赖关系管理的POM。

1 个答案:

答案 0 :(得分:1)

以下内容来自docs:

  • 将所有与foo相关的文件从Maven存储库中的/ bar / foo /复制到临时位置。
  • 将临时位置中所有与foo相关的pom文件中的groupId更改为org.bar。
  • 将所有文件从临时位置复制到Maven 2存储库中的/ org / bar / foo /。
  • 为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。