如何使用maven-release插件最后发布工件

时间:2018-06-26 04:48:32

标签: maven-release-plugin multi-module maven-deploy-plugin

我有一个多模块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>

1 个答案:

答案 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]