【问题标题】:How can I get maven-release-plugin to skip my tests?如何让 maven-release-plugin 跳过我的测试?
【发布时间】:2012-01-30 21:20:18
【问题描述】:

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

我试过了

-Dmaven.test.skip=true 

-DskipTests 

-DpreparationGoals=clean

...但没有任何工作。

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

【问题讨论】:

    标签: maven maven-release-plugin maven-surefire-plugin


    【解决方案1】:

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

    【讨论】:

    • 它对我有用,谢谢和+1,但是... Wny 这有必要吗?
    • IT 是必要的,因为发布进程会派生一个新的 maven 进程,并且 tpical -DskipTests 不会作为系统属性传递。
    • 希望我能投票给你2。我花了几个小时试图做到这一点......但是 1. 我是否遗漏了文档中的某些内容,或者 mvn 文档是否遗漏了某些内容? 2. 我在公司的 POM 中配置了<skipTests>true</skipTests>。仍然没有工作。有效的是您的解决方案。
    • 你需要在 pom 中进行一些特定的配置来完成这项工作吗?
    【解决方案2】:

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

    -Darguments="-DskipITs"
    

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        【解决方案4】:

        使用以下参数跳过测试

        -Darguments="-DskipTests"

        默认跳过

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

        【讨论】:

        • 这个问题专门针对 Maven 发布插件,所以这些不是将要使用的 Maven 目标。
        【解决方案5】:

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

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

        之后就可以执行释放了。

        【讨论】:

          【解决方案6】:

          我已经设法避免运行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>
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2014-09-03
            • 2021-04-30
            • 1970-01-01
            • 2018-12-02
            • 2012-02-02
            • 1970-01-01
            相关资源
            最近更新 更多