with shade proyecto plugin generar dependency java maven hadoop maven-shade-plugin

java - proyecto - maven-shade-plugin



¿Cómo puedo configurar el plugin maven shade para incluir código de prueba en mi jar? (3)

Uso el plugin maven de sombra para construir mi proyecto de manera que todas sus dependencias estén incluidas en un jar (esto hace que sea más fácil ejecutarlo en Hadoop). La sombra parece excluir mi código de prueba por defecto, lo cual es comprensible. Como me gustaría ejecutar pruebas de integración en mi clúster, espero configurar otro perfil para crear un jar separado para este propósito. ¿Hay alguna forma de configurar este complemento para incluir también el código de prueba?


Intente include sus paquetes de prueba de esta manera:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>1.2.2</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <artifactSet> <includes> <include>org.apache.maven:*</include> </includes> </artifactSet> </configuration> </execution> </executions> </plugin>


Me las he arreglado para hacer que funcione agregando:

<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.9.1</version> <executions> <execution> <id>add-source</id> <phase>generate-sources</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${project.basedir}/src/test/java/</source> </sources> </configuration> </execution> </executions> </plugin>


Con la versión 2.2 del maven-shade-plugin, agregaron una opción "shadeTestJar" (ver MSHADE-158): http://maven.apache.org/plugins/maven-shade-plugin/shade-mojo.html#shadeTestJar

Sin embargo, traté de usar esto y no pude hacerlo funcionar. Aquí está mi configuración de complementos:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>2.2</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <shadeTestJar>true</shadeTestJar> </configuration> </execution> </executions> </plugin>

El archivo "...- tests.jar" no tiene entradas, pero el jar sombreado principal se ve bien (aunque no contiene ninguna clase de prueba).

Además, esta pregunta duplica esta otra pregunta, aunque la respuesta aceptada no es realmente satisfactoria: ¿Cómo incluir clases de prueba en Jar creadas por maven-shade-plugin?