Maven -DskipTests ignored

117,987

Solution 1

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.

Solution 2

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.

Solution 3

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

Solution 4

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

Solution 5

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.

Share:
117,987
NeplatnyUdaj
Author by

NeplatnyUdaj

Updated on July 09, 2022

Comments

  • NeplatnyUdaj
    NeplatnyUdaj almost 2 years

    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?

  • NeplatnyUdaj
    NeplatnyUdaj over 10 years
    Exactly. I want them to be executed on the build server and when someone checkout the code. I just need to disable them in my project configuration
  • Andrei Nicusan
    Andrei Nicusan over 10 years
    You can create distinct Maven build profiles for distinct scenarios in which you'd need either to skip or execute the tests
  • JamesB
    JamesB over 10 years
    But maven.test.skip also skips compiling the tests. This is not necessarily what the OP wants.
  • NeplatnyUdaj
    NeplatnyUdaj over 10 years
    This seems like an overkill for such simple thing.
  • NeplatnyUdaj
    NeplatnyUdaj over 10 years
    Is it possible to compile tests and just not run them?
  • JamesB
    JamesB over 10 years
    The flag you are using should do that @NeplatnyUdaj
  • NeplatnyUdaj
    NeplatnyUdaj over 10 years
    Yes. It should. Apparently my surefire plugin configuration breaks it. Please see the edit of the original post.
  • NeplatnyUdaj
    NeplatnyUdaj over 10 years
    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
  • Aaron Digulla
    Aaron Digulla over 10 years
    Which version of the plugin?
  • Aaron Digulla
    Aaron Digulla over 10 years
    Update to version 2.15. 2.3 is pretty old. Maybe it doesn't support the compact syntax.
  • Raji
    Raji over 10 years
    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?
  • NeplatnyUdaj
    NeplatnyUdaj over 10 years
    ahh... now I understand it. It works when I remove the surefire configuration exactly because it uses newer version otherwise.
  • NeplatnyUdaj
    NeplatnyUdaj over 10 years
    Yes. That was the problem. It perfectly explains the behavior I observed
  • Nicola Musatti
    Nicola Musatti over 10 years
    @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.
  • NeplatnyUdaj
    NeplatnyUdaj over 10 years
    Nicola: I was about to suggest that too :)
  • Gorky
    Gorky over 7 years
    both can be used -DskipTests being just more convenient