Maven-跳过构建测试类

有没有一种不生成测试类的简单方法?

mvn clean install -Dmaven.test.skip=true
67203 次浏览

Run a phase that doesn't include test-compile, for example compile.

mvn clean compile

According to the documentation on the Maven Surefire Plugin, -Dmaven.test.skip should skip both compilation and execution of the tests. By contrast, -DskipTests just skips the test execution: the tests are still compiled.

Just to be explicitly clear:

skipTests will compile anything in the <testSourceDirectory>, but will not execute them.

maven.test.skip will NOT compile any tests, but WILL execute any compiled tests that made their way into the <testOutputDirectory>.

So the behavior of the above 2 is opposite. Just wanted to point out that maven.test.skip doesn't skip compilation AND execution if test files are unpacked/copied/etc. into <testOutputDirectory>.

Also, depending on which version of Maven your using, there's also maven.test.skip.exec=true which additionally skips test execution similar to skipTests.

I'm not an expert at maven, but what I use in my current project is:

mvn clean install -DskipTests=true

Depending on your use case using:

mvn compile -DskipTests=true

might work for you too.

I found a work-around in another question, which actually overrides a plugin execution by adding the following snippet in your pom.xml by default:

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

This seems to work but definitely does not disable phase but disables the default actions that a plugin defines at a specific phase.