【发布时间】:2011-02-05 07:41:47
【问题描述】:
有没有不构建测试类的简单方法?
mvn clean install -Dmaven.test.skip=true
【问题讨论】:
-
跳过编译还是跳过执行?
-
我需要在不编译测试类的情况下运行 jetty。
标签: maven-2
有没有不构建测试类的简单方法?
mvn clean install -Dmaven.test.skip=true
【问题讨论】:
标签: maven-2
根据 Maven Surefire 插件上的 documentation,-Dmaven.test.skip 应该跳过测试的编译和执行。相比之下,-DskipTests 只是跳过测试执行:测试仍在编译中。
【讨论】:
skipTests 只是跳过执行 测试而maven.text.skip 跳过编译和执行 测试。我总是要查找哪个是哪个。
明确一点:
skipTests 将编译 <testSourceDirectory> 中的任何内容,但不会执行它们。
maven.test.skip 将不编译任何测试,但将执行任何进入<testOutputDirectory> 的已编译测试。
所以上述2的行为是相反的。只是想指出maven.test.skip 如果测试文件被解压/复制/等,则不会跳过编译和执行。进入<testOutputDirectory>。
另外,根据您使用的 Maven 版本,还有maven.test.skip.exec=true,它额外跳过测试执行,类似于 skipTests。
【讨论】:
mvn clean package -DskipTests=true && mvn test -Dmaven.test.skip=true 将编译测试(因为第一个包执行),但不会在第二个命令中运行它们。假设标准目录,target/test-classes 将包含之后的所有测试,但它们尚未执行。
运行不包含test-compile 的phase,例如compile。
mvn clean compile
【讨论】:
我不是 maven 专家,但我在当前项目中使用的是:
mvn clean install -DskipTests=true
根据您的用例使用:
mvn compile -DskipTests=true
也许对你也有用。
【讨论】:
我在另一个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>
这似乎有效,但绝对不会禁用阶段,而是禁用插件在特定阶段定义的默认操作。
【讨论】: