Is there a simple way to not build the test classes?
mvn clean install -Dmaven.test.skip=true
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.
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.
Run a phase that doesn't include test-compile
, for example compile
.
mvn clean compile
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 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.