【问题标题】:Maven - Skip building test classesMaven - 跳过构建测试类
【发布时间】:2011-02-05 07:41:47
【问题描述】:

有没有不构建测试类的简单方法?

mvn clean install -Dmaven.test.skip=true

【问题讨论】:

  • 跳过编译还是跳过执行?
  • 我需要在不编译测试类的情况下运行 jetty。

标签: maven-2


【解决方案1】:

根据 Maven Surefire 插件上的 documentation-Dmaven.test.skip 应该跳过测试的编译和执行。相比之下,-DskipTests 只是跳过测试执行:测试仍在编译中。

【讨论】:

  • +1 但是,我讨厌这个命名。我完全不明白为什么skipTests 只是跳过执行 测试而maven.text.skip 跳过编译和执行 测试。我总是要查找哪个是哪个。
【解决方案2】:

明确一点:

skipTests 将编译 <testSourceDirectory> 中的任何内容,但不会执行它们。

maven.test.skip不编译任何测试,但将执行任何进入<testOutputDirectory> 的已编译测试。

所以上述2的行为是相反的。只是想指出maven.test.skip 如果测试文件被解压/复制/等,则不会跳过编译和执行。进入<testOutputDirectory>

另外,根据您使用的 Maven 版本,还有maven.test.skip.exec=true,它额外跳过测试执行,类似于 skipTests。

【讨论】:

  • 不幸的是,这不是真的,至少在 maven 3.0.5 和 maven-compiler-plugin 3.5.1 中是这样。您可以在每个包含测试的项目中对其进行测试:mvn clean package -DskipTests=true && mvn test -Dmaven.test.skip=true 将编译测试(因为第一个包执行),但不会在第二个命令中运行它们。假设标准目录,target/test-classes 将包含之后的所有测试,但它们尚未执行。
  • 这是正确答案,应该被接受
【解决方案3】:

运行不包含test-compilephase,例如compile

mvn clean compile

【讨论】:

    【解决方案4】:

    我不是 maven 专家,但我在当前项目中使用的是:

    mvn clean install -DskipTests=true
    

    根据您的用例使用:

    mvn compile -DskipTests=true
    

    也许对你也有用。

    【讨论】:

      【解决方案5】:

      我在另一个question 中找到了一种解决方法,它实际上通过在您的 pom.xml 中添加以下 sn-p 来覆盖插件执行:

      <build>
        <plugins>
          <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <executions>
              <execution>
                <id>default-testCompile</id>
                <phase>none</phase>
              </execution>
            </executions>
         </plugin>
        </plugins>
      </build>
      

      这似乎有效,但绝对不会禁用阶段,而是禁用插件在特定阶段定义的默认操作。

      【讨论】:

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