我正在尝试自动发布相互依赖的项目。这是场景。我有两个项目:A和B.项目B依赖于项目A.以下是自动化过程中需要执行的步骤:
将最新的SNAPSHOT版本的项目A部署到存储库。 (使用简单的部署工作。但是有一点点,我在下面描述过。)
在执行完整版本之前,将项目B中项目A的SNAPSHOT依赖项版本更新为最新版本。为了实现这一点,我在项目B的POM文件中设置了 prepareGoals ( clean verify versions:use-latest-versions versions:commit )。
一切似乎都很好。
现在我想要的是,一旦发布完成,项目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。
答案 0 :(得分:1)
您是否考虑过让两个项目都属于父项目。然后你释放父项目,然后自动释放每个模块(子项目)