Maven -DskipTests ignored
Solution 1
What you did should work. How to debug this further:
Run
mvn help:effective-pom
to see the whole POM that Maven will execute. Search it fortest
(case insensitive) to see if there is something odd.-
Run
mvn test -X
to get debug output. This will print the options used to configure themaven-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.
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
.
NeplatnyUdaj
Updated on July 09, 2022Comments
-
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 over 10 yearsExactly. 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 over 10 yearsYou can create distinct Maven build profiles for distinct scenarios in which you'd need either to skip or execute the tests
-
JamesB over 10 yearsBut maven.test.skip also skips compiling the tests. This is not necessarily what the OP wants.
-
NeplatnyUdaj over 10 yearsThis seems like an overkill for such simple thing.
-
NeplatnyUdaj over 10 yearsIs it possible to compile tests and just not run them?
-
JamesB over 10 yearsThe flag you are using should do that @NeplatnyUdaj
-
NeplatnyUdaj over 10 yearsYes. It should. Apparently my surefire plugin configuration breaks it. Please see the edit of the original post.
-
NeplatnyUdaj over 10 yearsIn 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 over 10 yearsWhich version of the plugin?
-
Aaron Digulla over 10 yearsUpdate to version 2.15. 2.3 is pretty old. Maybe it doesn't support the compact syntax.
-
Raji over 10 yearsI 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 over 10 yearsahh... now I understand it. It works when I remove the surefire configuration exactly because it uses newer version otherwise.
-
NeplatnyUdaj over 10 yearsYes. That was the problem. It perfectly explains the behavior I observed
-
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 over 10 yearsNicola: I was about to suggest that too :)
-
Gorky over 7 yearsboth can be used -DskipTests being just more convenient