首页 > 解决方案 > 在多模块 Maven 项目的发布中,未对所有项目执行构建

问题描述

我在发布多模块 Maven 项目期间遇到了构建问题。我有这个结构:

parent
|-- potato
|-- lettuce
|-- raddish

我想发布土豆和生菜项目。(他们不依赖快照萝卜。)

我使用的命令是:

mvn release:prepare -pl potato,lettuce ... (tag, versions and so on) -DpushChanges=false

历史上的每一次提交都如我所料——一次将马铃薯和生菜的版本从 X-SNAPSHOT 更改为 X,一次将 X 更改为 Y-SNAPSHOT。为这两个项目创建了一个标签。

但是,在发布期间有两个构建阶段:prepare——一个在 X 版本上调用 verify,一个在 Y-SNAPSHOT 版本上调用 verify。两个阶段都只构建了第一个项目,而不是第二个项目。(首先在 -pl 参数中指定。)调用 release:perform 时会发生同样的情况。只有第一个项目正在部署,其他一切都被忽略。

准备阶段生成的 release.properties 文件与此类似(注意 exec.pomFileName=potato/pom.xml):

project.scm.release.test\:potato.developerConnection=scm\:git\:http\://localhost\:3000/petr/release-test.git
project.scm.release.test\:lettuce.connection=scm\:git\:http\://localhost\:3000/petr/release-test.git
scm.commentPrefix=[maven-release-plugin]
project.scm.release.test\:potato.connection=scm\:git\:http\://localhost\:3000/petr/release-test.git
exec.pomFileName=potato/pom.xml
pushChanges=false
releaseStrategyId=default
project.scm.release.test\:lettuce.developerConnection=scm\:git\:http\://localhost\:3000/petr/release-test.git
scm.tag=33
project.scm.release.test\:lettuce.tag=HEAD
remoteTagging=true
scm.branchCommitComment=@{prefix} prepare branch @{releaseLabel}
projectVersionPolicyId=default
scm.url=scm\:git\:http\://localhost\:3000/petr/release-test.git
scm.tagNameFormat=@{project.artifactId}-@{project.version}
project.scm.release.test\:lettuce.url=http\://localhost\:3000/petr/release-test.git
pinExternals=false
project.scm.release.test\:potato.tag=HEAD
preparationGoals=clean verify
scm.releaseCommitComment=@{prefix} prepare release @{releaseLabel}
exec.snapshotReleasePluginAllowed=false
exec.additionalArguments=-pl=lettuce,potato
project.rel.release.test\:potato=33
project.rel.release.test\:lettuce=33
project.scm.release.test\:potato.url=http\://localhost\:3000/petr/release-test.git
scm.developmentCommitComment=@{prefix} prepare for next development iteration
scm.rollbackCommitComment=@{prefix} rollback the release of @{releaseLabel}
completedPhase=end-release

有没有办法只使用一个标签和提交来发布两个项目,但同时构建土豆和生菜(但不是萝卜)?

我正在使用发布插件 3.0.0-M1。

标签: mavenmaven-3maven-release-plugin

解决方案


推荐阅读