I am using Maven 2.2.1 and to build my project I used this command
mvn clean install -Dmaven.test.skip=true
However, the build failed saying it couldn't find one of the artifact. However, when I used:
mvn clean install -DskipTests
everything worked fine.
So far I have been thinking that these 2 commands are equivalent. However, this link seems to suggest that -Dmaven.test.skip=true
also skips compiling the test cases.
However, that still didn't explain to me why one command is working and another is not. Will be thankful if anyone please explain this to me.
Best Answer
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:If
-Dmaven.test.skip=true
(or simply-Dmaven.test.skip
) is specified, thetest-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.