我有一个多模块Maven项目。我正在使用maven-release插件将工件发布到maven存储库。我正在使用以下命令来完成上述任务。
mvn -B clean release:clean release:prepare release:perform -DautoVersionSubmodules=true '-DscmCommentPrefix=[maven-release-plugin]'
在一个子模块中,我有一个单元测试失败,但是我仍然看到除失败的模块外,其余模块都发布到了maven repo中。
是否只有在所有模块的单元测试通过后才发布所有子模块的方法?
以下是我在Parent pom.xml中具有的Maven Pom配置。
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-release-plugin</artifactId> <version>2.5.3</version> <configuration> <tagNameFormat>v@{project.version}</tagNameFormat> <localCheckout>true</localCheckout> <autoVersionSubmodules>true</autoVersionSubmodules> <useReleaseProfile>false</useReleaseProfile> <localCheckout>true</localCheckout> <pushChanges>true</pushChanges> <mavenExecutorId>forked-path</mavenExecutorId> <preparationGoals>clean deploy -U -B</preparationGoals> <goals>clean install</goals> <arguments>-Prelease</arguments> </configuration> </plugin>
答案 0 :(得分:1)
maven-deploy-plugin具有命令行选项“ -DdeployAtEnd = true”,可以完成此任务。但是由于maven-release-plugin在其自己的Maven实例中运行deploy命令,因此您必须使用maven-release-plugin -Darguments选项将其传递到该实例中。
总体而言,您的命令将如下所示。
mvn -B clean release:clean release:prepare -Darguments=\"-DdeployAtEnd=true\" release:perform -DautoVersionSubmodules=true '-DscmCommentPrefix=[maven-release-plugin]