Maven Release插件,版本插件和快照

时间:2011-06-20 20:42:07

标签: maven snapshot versions maven-release-plugin multiple-projects

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

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

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

  4. 一切似乎都很好。

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

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

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

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

    我猜测maven在maven-release-plugin目标执行后没有更新内存中的pom。

1 个答案:

答案 0 :(得分:1)

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