47

I'm building a Maven project with following SureFire configuration:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${version.maven-surefire-plugin}</version>
    <configuration>
        <includes>
            <include>**/*Test.java</include>
        </includes>
    </configuration>
</plugin>

Problem is, that when I build it with mvn clean install -DskipTests=true, the tests are still being executed. What could be the problem?

I tried both -DskipTests(which is from the Maven website) and -DskipTests=true, which is added by IntelliJ Idea when I check "skip tests" checkbox.

I don't use any Maven settings.xml.

  • Maven version: 2.2.1
  • Surefire plugin: 2.3

EDIT If I comment out the SureFire plugin configuration, the parameter behaves as I expect to. What could be the problem with the configuration above?

Sled
  • 18,541
  • 27
  • 119
  • 168
NeplatnyUdaj
  • 6,052
  • 6
  • 43
  • 76

6 Answers6

63

Maven knows two types of parameters for skipping tests:

-Dmaven.test.skip=true 

or

-DskipTests=true 

The surefire-plugin documentation only mentions the first one, which you have not tried yet.

gian1200
  • 3,670
  • 2
  • 30
  • 59
Jack
  • 2,937
  • 5
  • 34
  • 44
16

What you did should work. How to debug this further:

  1. Run mvn help:effective-pom to see the whole POM that Maven will execute. Search it for test (case insensitive) to see if there is something odd.

  2. Run mvn test -X to get debug output. This will print the options used to configure the maven-surefire-plugin. Make sure you redirect the output to a file!

    In the log, you will see

    [DEBUG] Configuring mojo 'org.apache.maven.plugins:maven-surefire-plugin:2.15:test' with basic configurator -->
    

    and then, some lines below that:

    [DEBUG]   (s) runOrder = filesystem
    [DEBUG]   (s) skip = false
    [DEBUG]   (s) skipTests = false
    

    These values mean that tests aren't skipped.

  3. Are you using a recent version of the plugin? Check here. Maybe this option wasn't supported for your version.

Aaron Digulla
  • 321,842
  • 108
  • 597
  • 820
  • In step 1 I don't see anything odd, but I don't know exactly what to look for either. I see none of these parameters in step 2. these are the parameters I have(which I think could mean something in this problem): forkMode=once; childDelegation=false; parallel=false;useFile=true – NeplatnyUdaj Nov 07 '13 at 15:15
  • Which version of the plugin? – Aaron Digulla Nov 07 '13 at 15:16
  • 2
    Update to version 2.15. 2.3 is pretty old. Maybe it doesn't support the compact syntax. – Aaron Digulla Nov 07 '13 at 15:23
  • 1
    ahh... now I understand it. It works when I remove the surefire configuration exactly because it uses newer version otherwise. – NeplatnyUdaj Nov 07 '13 at 15:31
  • 2
    @AaronDigulla you seem to have been the first to suggest updating surefire. Why don't you post your comment as an answer so that NeplatnyUdaj can accept it? This would give you a little reputation increase and make the solution much more visible. – Nicola Musatti Nov 07 '13 at 16:03
  • Nicola: I was about to suggest that too :) – NeplatnyUdaj Nov 07 '13 at 16:06
12

it is not -DskipTests=true it is just -DskipTests considering you are using surfire version 2.3

so you run it as

mvn install -DskipTests
J. Chomel
  • 8,193
  • 15
  • 41
  • 69
Raji
  • 527
  • 3
  • 6
  • 2
    I do this all the time. But my surefire version is 2.5.. I just tried it with 2.3 surefire version and it is ignoring the skipTests. Can you tried it with 2.5? – Raji Nov 07 '13 at 15:27
  • 1
    Yes. That was the problem. It perfectly explains the behavior I observed – NeplatnyUdaj Nov 07 '13 at 15:31
  • both can be used -DskipTests being just more convenient – Gorky Jan 12 '17 at 21:43
2

I'm not sure why the correct answer hasn't been posted yet. In older versions of SureFire the flag to compile tests but not run them is -Dmaven.test.skip.exec.

Chris
  • 5,571
  • 2
  • 20
  • 32
2

It's old question, but maybe my case help for someone.

So, -DskipTests/-DskipTests=true/-DskipITs/etc didn't work, and I didn't know why. I had <profiles> in my parent pom.xml and problem was in configuration of surefire/failsafe.

<profiles>
        <profile>
            <id>unit-test</id>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>integration-test</id>
            <properties>
                <skip.unit-tests>true</skip.unit-tests>
                <skip.integration-tests>false</skip.integration-tests>
                <skip.end-to-end-tests>true</skip.end-to-end-tests>
            </properties>
        </profile>
...
</profiles>

In plugins configuration I used like below:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${maven-surefire-plugin.version}</version>
    <configuration>
        <skipTests>${skip.unit-tests}</skipTests>
    </configuration>
...
</plugin>

This command didn't work:

mvn clean install -DskipTests -DskipITs

This works:

mvn clean install -Dskip.unit-tests=true -Dskip.integration-tests=true -Dskip.end-to-end-tests=true
jswieca
  • 115
  • 1
  • 2
  • 12
0

Try the following configuration for your surefire plugin

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
    <version>${version.surefire.plugin}</version>
    <configuration>
        <skip>true</skip>
    </configuration>
</plugin>
Andrei Nicusan
  • 4,555
  • 1
  • 23
  • 36