Estoy usando Maven 2.2.1 y para construir mi proyecto usé este comando
mvn clean install -Dmaven.test.skip=true
Sin embargo, la construcción falló diciendo que no podía encontrar uno de los artefactos. Sin embargo, cuando usé:
mvn clean install -DskipTests
Todo funcionó bien.
Hasta ahora he estado pensando que estos 2 comandos son equivalentes. Sin embargo, este enlace parece sugerir que -Dmaven.test.skip=true
también omite compilar los casos de prueba.
Sin embargo, eso todavía no me explicaba por qué un comando funciona y otro no. Estaré agradecido si alguien me explica esto.
-Dmaven.test.skip=true -DskipTests
? Uno u otro a veces se puede omitir, dependiendo de las circunstancias, pero quién quiere pensar en eso ...Respuestas:
Como notó,
-Dmaven.test.skip=true
omite compilar las pruebas. Más concretamente, se salta la construcción de los artefactos de prueba. Una práctica común para proyectos grandes es tener utilidades de prueba y clases base compartidas entre módulos en el mismo proyecto.Esto se logra haciendo que un módulo requiera un
test-jar
módulo previamente construido:Si se especifica
-Dmaven.test.skip=true
(o simplemente-Dmaven.test.skip
), lostest-jar
s no se compilan, y cualquier módulo que se base en ellos fallará su compilación.Por el contrario, cuando lo usa
-DskipTests
, Maven no ejecuta las pruebas, pero las compila y crea el test-jar, dejándolo disponible para los módulos subsiguientes.fuente
Tuve cierta interdependencia con las pruebas para construir el paquete.
El siguiente comando logra anular la necesidad del artefacto de prueba para completar el objetivo:
fuente
Hay una diferencia entre cada parámetro.
La fase de pruebas de ejecución de -DskipTests omite, significa que al final de este proceso tendrá sus pruebas compiladas.
La fase -Dmaven.test.skip = verdadera omisión de compilación y ejecución de pruebas.
Como el parámetro -Dmaven.test.skip = compilación de omisión verdadera no tiene el artefacto de pruebas.
Para obtener más información, solo lea la documentación de surfire: http://maven.apache.org/plugins-archives/maven-surefire-plugin-2.12.4/examples/skipping-test.html
fuente
Puedo darle un ejemplo que resulta con el mismo problema, pero puede que no le dé una respuesta a su pregunta. (Además, en este ejemplo, estoy usando mi conocimiento de Maven 3, que puede no aplicarse para Maven 2).
En un proyecto maven de módulos múltiples (contiene módulos
A
yB
, dondeB
dependeA
), también puede agregar una dependencia de prueba enA
partirB
.Esta dependencia puede tener el siguiente aspecto:
(para obtener más información, consulte https://maven.apache.org/guides/mini/guide-attached-tests.html )
Tenga en cuenta que el proyecto
A
produce artefactos secundarios con un clasificadortests
donde se encuentran las clases de prueba y los recursos de prueba.Si crea su proyecto con
-Dmaven.test.skip=true
, obtendrá un error de resolución de dependencia siempre que el artefacto de prueba no se encuentre en su repositorio local o repositorios externos. La razón es que las clases de prueba no se compilaron nitests
se produjo el artefacto.Sin embargo, si ejecuta su compilación con
-DskipTests
sutests
artefacto, se producirá (aunque las pruebas no se ejecutarán) y la dependencia se resolverá.fuente
Para omitir el caso de prueba durante la instalación de Maven Clean, utilicé -DskipTests paramater en el siguiente comando
en ventana de terminal
fuente
El parámetro -DskipTests puede no funcionar según su versión de plugin surefire.
Fuente: Detalles del parámetro Surefire
fuente
Durante la compilación de Maven, puede omitir la ejecución de la prueba agregando el siguiente complemento en pom.xml
fuente
mvn test