Maven - Skip building test classes
Asked Answered
S

5

90

Is there a simple way to not build the test classes?

mvn clean install -Dmaven.test.skip=true
Sadiesadira answered 7/4, 2010 at 15:10 Comment(2)
skip compiling or skip executing?Operant
I need to run jetty without compiling the test classes.Sadiesadira
T
151

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.

Turner answered 7/4, 2010 at 15:43 Comment(1)
+1 I hate the naming, however. It's completely non-obvious to me why skipTests just skips executing the tests and maven.text.skip skips compiling and executing the tests. I always have to look up which one is which.Isola
A
21

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.

Annelid answered 25/6, 2012 at 18:37 Comment(2)
That is unfortunately not true, at least in maven 3.0.5 and maven-compiler-plugin 3.5.1. You can test it in every project containing tests: mvn clean package -DskipTests=true && mvn test -Dmaven.test.skip=true will compile the tests (because of the first package-execution) but not run them in the second command. Assuming standard directories, target/test-classes will contain all tests afterwards, but they have not been executed.Yokefellow
This is the correct answer and should be accepted as suchVassal
S
10

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

mvn clean compile
Selfexplanatory answered 7/4, 2010 at 15:37 Comment(0)
F
8

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.

Featherstitch answered 20/5, 2013 at 22:54 Comment(0)
F
1

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.

Farm answered 28/11, 2017 at 4:31 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.