如何在不触发测试的情况下运行maven-release-plugin?
我尝试过:
-Dmaven.test.skip=true
并且
-DskipTests
并且
-DpreparationGoals=clean
...但是它们都没有奏效。
是的,我知道如果测试不通过就不应该发布,但我无法控制我的同事编写可靠的测试。
如何在不触发测试的情况下运行maven-release-plugin?
我尝试过:
-Dmaven.test.skip=true
并且
-DskipTests
并且
-DpreparationGoals=clean
...但是它们都没有奏效。
是的,我知道如果测试不通过就不应该发布,但我无法控制我的同事编写可靠的测试。
-Darguments="-DskipTests"
是您需要的,或者在pom中明确配置分叉执行。
-Darguments="..."
参数传递给分叉的maven进程,但是需要注意这里使用了两个不同的开关。 -DskipTests
强制maven不运行任何测试,但测试仍然被编译(如果您有任何对test-jar类型的依赖关系,则这很重要)。 -Dmaven.test.skip=true
强制maven甚至不编译测试,这意味着任何test-jars都将不会生成。
因此,您必须使用-Darguments
,但要跳过测试,请仅使用skipTests
,要停止编译测试,请使用maven.test.skip
。
如果你只想跳过集成测试,可以使用以下方法:
-Darguments="-DskipITs"
您有两种不同的选择来避免和跳过使用发布插件进行测试:
例如: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>
我通过将configuration
的preparationGoals
添加到clean
中,成功避免了运行verify
目标:
<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>
使用以下参数跳过测试
-Darguments="-DskipTests"
或者
默认情况下进行跳过
[...]
<properties>
<skipTests>true</skipTests>
</properties>
[...]
<plugin>
<groupId>com.amashchenko.maven.plugin</groupId>
<artifactId>gitflow-maven-plugin</artifactId>
<version>${gitflow.plugin.version}</version>
<configuration>
<skipTestProject>true</skipTestProject>
</configuration>
</plugin>
<skipTests>true</skipTests>
,但还是没用。最后有效的是你提供的解决方案。 - Pulak Agrawal