0

我正在尝试自动发布相互依赖的项目。这是场景。我有两个项目:A 和 B。项目 B 依赖于项目 A。以下是自动化过程中需要执行的步骤:

  1. 使用 maven-release-plugin 发布项目 A。(我知道该怎么做)。这是我定义的目标序列: release:clean release:prepare -DcommitByProject=true -DautoVersionSubmodules=true release:perform
  2. 将项目 A 的最新 SNAPSHOT 版本部署到存储库。(使用简单的部署是有效的。但是有一个小问题,我已经在下面描述了。)

  3. 在进行完整发布之前,将项目 B 中的项目 A 的 SNAPSHOT 依赖版本更新为最新的发布版本。为了实现这一点,我在项目 B 的 POM 文件中设置了这样的准备目标(clean verify versions:use-latest-versions versions:commit )。

一切似乎都很好。

现在我想要的是,一旦发布完成,项目 B 中的项目 A 依赖于发布期间由release:prepare插件设置的最新 SNAPSHOT 版本。

我想出的解决方案是在release:perform执行后立即为项目 A SNAPSHOT进行maven 部署。(项目 A 的新目标顺序: release:clean release:prepare -DcommitByProject=true -DautoVersionSubmodules=true release:perform clean install deploy

然后,我可以在项目 B 的发布周期结束时执行versions:use-next-snapshots 。(项目 B 的新目标顺序:release:clean release:prepare -DcommitByProject=true -DautoVersionSubmodules=true release:perform versions:use-next-snapshots)。在这里,我确实将我的版本插件限制为仅处理项目 A 依赖项。

问题是当我执行项目 A 的目标时,Maven 使用旧版本而不是增量版本部署 SNAPSHOT。因此,如果项目 A 发布之前的版本是1.1-SNAPSHOT。发布后的版本现在是1.2-SNAPSHOT。发布版本将是1.1。但是,部署的项目 A 快照版本是1.1-SNAPSHOT 而不是1.2-SNAPSHOT

我猜在执行 maven-release-plugin 目标后,maven 不会更新内存中的 pom。

4

1 回答 1

1

您是否考虑过让两个项目都属于父项目。然后你释放父项目,然后自动释放每个模块(子项目)

于 2011-06-20T22:55:38.380 回答