2011-03-01 30 views
10

Uso el plugin maven para construir mi proyecto de forma que todas sus dependencias estén incluidas en un solo 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?¿Cómo puedo configurar el plugin maven shade para incluir código de prueba en mi jar?

+0

Esto es más de un solución alternativa a una respuesta directa, pero terminé agregando un objetivo de prueba de jar al proyecto que contiene las pruebas y agregando otra dependencia en ese proyecto (con el clasificador de 'pruebas') a mi proyecto de pizarra. No es ideal, pero ahora mi tarro de pizarra también incluye pruebas. –

+0

¿Puedes darnos un ejemplo de lo que hiciste? Soy nuevo en Maven y no entiendo cómo agregaría objetivos al proyecto o clasificadores a las dependencias. – divegeek

+1

Añadir esto a la sección de construcción del pom cuyas pruebas desea volver a utilizar: ' experto-jar-plugin prueba de jarra paquete prueba de jarra ' confiar en que jarra de prueba con el clasificador "pruebas": ' com.abc bla 1.0 pruebas prueba ' –

Respuesta

0

Trate include ing sus paquetes de prueba como esta:

<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> 
+0

No creo que esto funcione a menos que incluya incluir un artefacto que incluya código de prueba. Incluso entonces tendría que agregar una inclusión para cada una de mis dependencias, que es redundante. –

5

Con la versión 2.2 del experto-sombra-plugin, se añadió 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 plug-in config:

<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 la principal tarro de sombreado se ve bien (aunque no contiene ninguna clase de prueba).

Además, esta pregunta duplica esta otra pregunta, aunque la respuesta aceptada no es real satisfactoria: How to include test classes in Jar created by maven-shade-plugin?

+0

También traté durante mucho tiempo este camino pero no pude hacerlo funcionar, terminé usando el plugin Assembly y funcionó bien, verifique mi solución aquí http://stackoverflow.com/a/36058365/5606016 –

0

he conseguido hacerlo funcionar añadiendo:

<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> 
+0

For para que funcione, las dependencias de prueba deben realizarse dependencias que no sean de prueba. – user411279

Cuestiones relacionadas