我如何获得Maven-release-plugin跳过测试?


177

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

我努力了

-Dmaven.test.skip=true 

-DskipTests 

-DpreparationGoals=clean

...却无济于事。

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

Answers:


407

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


1
它对我有用,谢谢和+1,但是...这有必要吗?
javamonkey79

5
IT是必需的,因为发布过程派生了一个新的Maven进程,并且tpical -DskipTests不会作为系统属性传递。
艾迪(Eddie)2012年

4
希望我能投票赞成你2。我花了几个小时试图解决这个问题……但是1.我错过了文档中的内容吗?还是mvn文档中缺少了内容?2.我已经<skipTests>true</skipTests>在公司POM中进行了 配置。仍然没有用。起作用的是您的解决方案。
Pulak Agrawal

您是否需要在pom中进行一些特定的配置才能使其正常工作?
DenCowboy

42

-Darguments="..."将参数传递给派生的Maven进程,但重要的是要意识到这里使用了两个不同的开关。该-DskipTests部队Maven来未运行任何测试,但测试仍在编译(这是很重要的,如果你有一个测试罐子类型的任何依赖关系)。的-Dmaven.test.skip=trueMaven来的力甚至不编译的测试,这意味着任何测试罐不会产生。

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



3

您有太多不同的选择,可以避免并使用发布插件跳过测试

  • 第一种是通过提供-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.properties文件,并在exec.additionalArguments其中存在参数的情况下查看属性。它看起来像:exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode

之后就可以执行发布了。


2

使用以下参数跳过测试

-Darguments="-DskipTests"

要么

或者默认跳过

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

2
这个问题专门针对Maven版本插件,因此这些不是将要使用的Maven目标。
Jaap 2016年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.