maven - springframework - sec authorize
Maven pruebas de omisiĆ³n (4)
Como notó, -Dmaven.test.skip=true
omite la compilación de las pruebas. Más al punto, omite construir 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
de test-jar
de un módulo previamente construido:
<dependency>
<groupId>org.myproject.mygroup</groupId>
<artifactId>common</artifactId>
<version>1.0</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
Si se -Dmaven.test.skip=true
(o simplemente -Dmaven.test.skip
), los -Dmaven.test.skip
test-jar
no se -Dmaven.test.skip
, y cualquier módulo que dependa de ellos fallará en su compilación.
Estoy usando Maven 2.2.1 y para construir mi proyecto usé este comando
mvn clean install -Dmaven.test.skip=true
Sin embargo, la compilación falló diciendo que no pudo encontrar uno de los artefactos. Sin embargo, cuando utilicé:
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 la compilación de los casos de prueba.
Sin embargo, eso todavía no me explica por qué un comando está funcionando y otro no. Estaré agradecido si alguien por favor me explica esto.
Durante la compilación de maven puede omitir la ejecución de la prueba agregando el siguiente complemento en pom.xml
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.20.1</version>
<configuration>
<skipTests>true</skipTests>
</configuration>
</plugin>
Puedo darte un ejemplo que resulte con el mismo problema, pero puede que no te dé una respuesta a tu pregunta. (Además, en este ejemplo, estoy usando mi conocimiento de Maven 3, que puede no ser válido para Maven 2.)
En un proyecto maven de varios módulos (contiene los módulos A
y B
, donde B
depende de A
), puede agregar también una dependencia de prueba en A
desde B
Esta dependencia puede verse de la siguiente manera:
<dependency>
<groupId>com.foo</groupId>
<artifactId>A</artifactId>
<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 2. -->
<scope>test</scope>
</dependency>
(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 un artefacto secundario con un clasificador donde se ubican las clases de prueba y los recursos de prueba.
Si construye su proyecto con -Dmaven.test.skip=true
, obtendrá un error de resolución de dependencia siempre que el artefacto de prueba no se haya encontrado en su repositorio local o en repositorios externos. La razón es que las clases de prueba no se compilaron ni se produjo el artefacto de las tests
.
Sin embargo, si ejecuta su compilación con -DskipTests
su artefacto de tests
(aunque las pruebas no se ejecutarán) y se resolverá la dependencia.
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:
mvn -DskipTests=true package