如何让 maven-release-plugin 跳过测试?

如何在不触发测试的情况下运行 maven-release-plugin?

我试过了

-Dmaven.test.skip=true

还有

-DskipTests

还有

-DpreparationGoals=clean

但都没用。

是的,我知道如果测试没有通过,我就不应该发布,但是我无法控制让我的同事编写可靠的测试。

62804 次浏览

-Darguments="-DskipTests"是您想要的,或者显式地配置 pom 中的分叉执行。

如果您只是想跳过集成测试,那么这样做就可以了:

-Darguments="-DskipITs"

-Darguments="..."将参数传递给 forked maven 进程,但是必须意识到这里使用了两个不同的开关。-DskipTests强制 maven 不运行任何测试,但是测试仍然被编译(如果您有任何依赖于 test-jar 类型的依赖项,这一点很重要)。-Dmaven.test.skip=true强制 maven 甚至不编译测试,这意味着不会生成任何 test-jar。

因此,必须使用 -Darguments,但是要跳过仅使用 skipTests运行的测试,要停止它们的编译,则使用 maven.test.skip

使用以下参数可跳过测试

-Darguments="-DskipTests"

或者

或者默认跳过

 [...]
<properties>
<skipTests>true</skipTests>
</properties>
[...]

你有太多不同的选择来避免和跳过发布插件的测试

  • 第一个是通过提供 a-Darguments 将 cli 作为一个论点传递到发布目标或阶段:

例子: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare

- 第二种是在构建中对 pom.xml 执行这些参数,如下所示:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<dependencies>
<dependency>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>1.9.4</version>
</dependency>
</dependencies>
<configuration>
<skip>true</skip>
<skipTests>true</skipTests>
<preparationGoals>clean validate</preparationGoals>
<arguments>-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true</arguments>
<useReleaseProfile>false</useReleaseProfile>
<releaseProfiles>release-mode</releaseProfiles>
<tagNameFormat>TEST-@{project.version}</tagNameFormat>
</configuration>
</plugin>

注意,第二个方法重写第一个方法。

我建议您首先在单个操作上准备 release,然后您可以编辑工作目录上的 release. properties 文件,如果有参数,则查看 exec.additionalArguments属性。它看起来像: exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode

在您可以执行释放之后。

我已经设法避免运行 verify的目标,简单地添加 configuration preparationGoalsclean:

<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-release-plugin</artifactId>
<version>2.5.3</version>
<configuration>
<preparationGoals>clean</preparationGoals> <!-- See here -->
</configuration>
</plugin>