To skip running the tests for a particular project, set the skipTests property to true. You can also skip the tests via the command line by executing the following command: mvn install -DskipTests.
Maven docs: -DskipTests compiles the tests, but skips running them. -Dmaven.test.skip=true skips compiling the tests and does not run them. Also this one might be important. maven.test.skip is honored by Surefire, Failsafe and the Compiler Plugin.
As you noted, -Dmaven.test.skip=true
skips compiling the tests. More to the point, it skips building the test artifacts. A common practice for large projects is to have testing utilities and base classes shared among modules in the same project.
This is accomplished by having a module require a test-jar
of a previously built module:
<dependency>
<groupId>org.myproject.mygroup</groupId>
<artifactId>common</artifactId>
<version>1.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
If -Dmaven.test.skip=true
(or simply -Dmaven.test.skip
) is specified, the test-jar
s aren't built, and any module that relies on them will fail its build.
In contrast, when you use -DskipTests
, Maven does not run the tests, but it does compile them and build the test-jar, making it available for the subsequent modules.
I had some inter-dependency with the tests in order to build the package.
The following command manage to override the need for the test artifact in order to complete the goal:
mvn -DskipTests=true package
There is a difference between each parameter.
The -DskipTests
skip running tests phase, it means at the end of this process you will have your tests compiled.
The -Dmaven.test.skip=true
skip compiling and running tests phase.
As the parameter -Dmaven.test.skip=true
skip compiling you don't have the tests artifact.
For more information just read the surfire documentation: http://maven.apache.org/plugins-archives/maven-surefire-plugin-2.12.4/examples/skipping-test.html
To skip the test case during maven clean install i used -DskipTests paramater in following command
mvn clean install -DskipTests
into terminal window
I can give you an example which results in the same problem, but it may not give you an answer to your question. (Additionally, in this example, I'm using my Maven 3 knowledge, which may not apply for Maven 2.)
In a multi-module maven project (contains modules A
and B
, where B
depends on A
), you can add also a test dependency of A
in B
.
This dependency in B
may look as follows:
<dependency>
<groupId>com.foo</groupId>
<artifactId>A</artifactId>
<classifier>tests</classifier>
<type>test-jar</type> <!-- I'm not sure if there is such a thing in Maven 2, but there is definitely a way to achieve such dependency in Maven 3. -->
<scope>test</scope>
</dependency>
(For more information refer to https://maven.apache.org/guides/mini/guide-attached-tests.html)
Note that project A
usually produces a secondary artifact with a classifier tests
(i.e. .../com/foo/A/<version>/A-<version>-tests.jar
) where the test classes and test resources are located inside.
If you build project A
with -Dmaven.test.skip=true
, you will get a dependency resolution error when building B
unless A
's test artifact is found in your local repo or remote repositories. The reason is that the test classes of A
were neither compiled nor the tests
artifact of A
was produced.
However, if you build A
with -DskipTests
its tests
artifact will be produced (though the tests won't run) and the dependency in B
will be resolved successfully.
The parameter -DskipTests may not work depending on your surefire-plugin version.
You can use "-Dmaven.test.skip.exec" instead of "-DskipTests"
Source: Surefire Parameter Details
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With