Maven-跳过建筑测试课程


79

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

mvn clean install -Dmaven.test.skip=true

沃尔特


3
跳过编译或跳过执行?
博佐2010年

我需要运行码头而不编译测试类。

Answers:


133

根据有关Maven Surefire插件的文档-Dmaven.test.skip 跳过测试的编译和执行。相比之下,-DskipTests只需跳过测试执行即可:测试仍在编译中。


28
+1不过,我讨厌命名。我完全不明白为什么skipTests只跳过执行测试,而maven.text.skip跳过编译和执行测试。我总是要查哪一个。
约阿希姆·绍尔

17

只是要明确指出:

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

maven.test.skip不编译任何测试,但将执行该作出自己的方式进入任何编译测试<testOutputDirectory>

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

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


3
不幸的是,至少在maven 3.0.5和maven-compiler-plugin 3.5.1中,这不是事实。您可以在每个包含测试的项目中对其进行测试:mvn clean package -DskipTests=true && mvn test -Dmaven.test.skip=true将编译测试(由于第一个程序包执行),但不会在第二个命令中运行它们。假定为标准目录,target/test-classes此后将包含所有测试,但尚未执行。
David Georg Reichelt,2016年

这是正确的答案,应这样接受
Artem


8

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

mvn clean install -DskipTests=true

根据您的用例使用:

mvn compile -DskipTests=true

可能也为您工作。


0

我在另一个问题中找到了解决方法,该问题实际上是通过默认在pom.xml中添加以下代码片段来覆盖插件执行的:

<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>

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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.