183

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

我努力了

-Dmaven.test.skip=true 

-DskipTests 

-DpreparationGoals=clean

...但没有任何工作。

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

4

6 回答 6

412

-Darguments="-DskipTests"是你想要的,或者在 pom.xml 中明确配置分叉的执行。

于 2011-12-31T00:03:09.210 回答
42

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

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

于 2013-02-08T18:27:41.273 回答
21

如果您只想跳过集成测试,可以这样做:

-Darguments="-DskipITs"
于 2012-09-24T03:27:04.910 回答
4

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

  • 第一种是通过提供 -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.

之后就可以执行发布了。

于 2018-06-07T10:12:06.910 回答
2

使用以下参数跳过测试

-Darguments="-DskipTests"

或者

或者默认跳过

 [...]
  <properties>
    <skipTests>true</skipTests>
  </properties>
  [...]
于 2016-06-28T07:39:56.897 回答
1

我设法verify通过简单地添加configuration preparationGoalsto来避免运行目标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>
于 2021-07-09T09:10:33.380 回答