maven-2 - proyecto - maven tutorial pdf
Dependencia de prueba de Maven en proyecto de múltiples módulos (2)
En cuanto a mi comentario a la pregunta de Pascals, creo que encontré una respuesta interesante:
<plugins>
<plugin>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
<phase>test-compile</phase>
</execution>
</executions>
<configuration>
<outputDirectory>${basedir}/target</outputDirectory>
</configuration>
</plugin>
</plugins>
La principal diferencia aquí, como puede ver aquí, es la etiqueta <phase>
.
Crearé el archivo de prueba y estará disponible en la fase de compilación de las pruebas y no solo después de la fase del paquete.
Funciona para mi.
Yo uso maven para construir un proyecto de múltiples módulos. Mi módulo 2 depende del módulo 1 src en el ámbito de compilación y del módulo 1 en el alcance de la prueba.
Módulo 2 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>test</scope>
</dependency>
Esto funciona bien Supongamos que mi módulo 3 depende de Module1 src y las pruebas en tiempo de compilación.
Módulo 3 -
<dependency>
<groupId>blah</groupId>
<artifactId>MODULE1</artifactId>
<version>blah</version>
<classifier>tests</classifier>
<scope>compile</scope>
</dependency>
Cuando ejecuto mvn clean install
, mi compilación se ejecuta hasta el módulo 3, falla en el módulo 3 porque no pudo resolver la dependencia de prueba del módulo 1. Luego hago una mvn install
en el módulo 3 solo, vuelvo y ejecuto mvn install
en mi pom padre para hacerlo construir. ¿Cómo puedo arreglar esto?
Tengo una duda sobre lo que intenta hacer, pero supongo que quiere reutilizar las pruebas que ha creado para un proyecto (módulo1) en otro. Como se explica en la nota al final de la Guía para usar las pruebas adjuntas :
Tenga en cuenta que las ediciones anteriores de esta guía sugerían utilizar
<classifier>tests</classifier>
lugar de<type>test-jar</type>
. Si bien esto actualmente funciona en algunos casos, no funciona correctamente durante una construcción del reactor del módulo JAR de prueba y cualquier consumidor si se invoca una fase del ciclo de vida antes de la instalación. En tal escenario, Maven no resolverá el JAR de prueba a partir de la salida de la construcción del reactor, sino desde el repositorio local / remoto. Aparentemente, el JAR de los repositorios podría estar desactualizado o faltar por completo, causando una falla de compilación (ver MNG-2045 ).
Entonces, primero, para empaquetar las pruebas compiladas en un JAR y desplegarlas para su reutilización general, configure el maven-jar-plugin
siguiente manera:
<project>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.2</version>
<executions>
<execution>
<goals>
<goal>test-jar</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
Luego, instale / despliegue el artefacto JAR de prueba como de costumbre (usando mvn install
o mvn deploy
).
Finalmente, para usar el JAR de prueba, debe especificar una dependencia con un tipo específico de test-jar
:
<project>
...
<dependencies>
<dependency>
<groupId>com.myco.app</groupId>
<artifactId>foo</artifactId>
<version>1.0-SNAPSHOT</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
</dependencies>
...
</project>