如何在不触发测试的情况下运行 maven-release-plugin?
我努力了
-Dmaven.test.skip=true
和
-DskipTests
和
-DpreparationGoals=clean
...但没有任何工作。
是的,我知道如果测试不通过我不应该发布,但我无法控制让我的同事编写可靠的测试。
如何在不触发测试的情况下运行 maven-release-plugin?
我努力了
-Dmaven.test.skip=true
和
-DskipTests
和
-DpreparationGoals=clean
...但没有任何工作。
是的,我知道如果测试不通过我不应该发布,但我无法控制让我的同事编写可靠的测试。
-Darguments="-DskipTests"
是你想要的,或者在 pom.xml 中明确配置分叉的执行。
-Darguments="..."
将参数传递给分叉的 maven 进程,但重要的是要意识到这里使用了两个不同的开关。-DskipTests
强制 maven 不运行任何测试,但仍然编译测试(如果您对 test-jar 类型有任何依赖关系,这很重要)。强制 maven 甚至不编译测试,这-Dmaven.test.skip=true
意味着不会生成任何测试罐。
因此,您必须使用-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>
请注意,第二种方法会覆盖第一种方法。
我建议您首先在单个操作中准备发布,然后您可以编辑工作目录上的 release.properties 文件并查看exec.additionalArguments
属性(如果您的参数存在)。它看起来像:exec.additionalArguments=-Dmaven.javadoc.skip\=true -Dmaven.test.skipTests\=true -Dmaven.test.skip\=true -P release-mode
.
之后就可以执行发布了。
使用以下参数跳过测试
-Darguments="-DskipTests"
或者
或者默认跳过
[...]
<properties>
<skipTests>true</skipTests>
</properties>
[...]
我设法verify
通过简单地添加configuration
preparationGoals
to来避免运行目标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>