如何在不触发测试的情况下运行 maven-release-plugin?
我试过了
-Dmaven.test.skip=true
还有
-DskipTests
-DpreparationGoals=clean
但都没用。
是的,我知道如果测试没有通过,我就不应该发布,但是我无法控制让我的同事编写可靠的测试。
-Darguments="-DskipTests"是您想要的,或者显式地配置 pom 中的分叉执行。
-Darguments="-DskipTests"
如果您只是想跳过集成测试,那么这样做就可以了:
-Darguments="-DskipITs"
-Darguments="..."将参数传递给 forked maven 进程,但是必须意识到这里使用了两个不同的开关。-DskipTests强制 maven 不运行任何测试,但是测试仍然被编译(如果您有任何依赖于 test-jar 类型的依赖项,这一点很重要)。-Dmaven.test.skip=true强制 maven 甚至不编译测试,这意味着不会生成任何 test-jar。
-Darguments="..."
因此,必须使用 -Darguments,但是要跳过仅使用 skipTests运行的测试,要停止它们的编译,则使用 maven.test.skip。
-Darguments
skipTests
maven.test.skip
使用以下参数可跳过测试
或者
或者默认跳过
[...] <properties> <skipTests>true</skipTests> </properties> [...]
你有太多不同的选择来避免和跳过发布插件的测试
例子: mvn -X -Darguments="-Dmaven.javadoc.skip=true -Dmaven.test.skipTests=true -Dmaven.test.skip=true" -P release-mode release:prepare
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。
exec.additionalArguments
exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode
在您可以执行释放之后。
我已经设法避免运行 verify的目标,简单地添加 configuration preparationGoals到 clean:
verify
configuration
preparationGoals
clean
<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>