proyecto pom partir limpiar introduccion desde curso crear consola configurar con arquitectura arquetipo maven-2

maven 2 - pom - Compartir recursos de prueba entre proyectos de maven.



limpiar proyecto maven (3)

La respuesta aceptada me ayudó, pero no es muy precisa en caso de que también necesite un frasco regular del mismo proyecto. Se eliminarán los archivos * .class de ambos archivos jar.
Los ajustes a continuación se traducen en algo como:

  • Créeme 2 frascos, 1 regular, 1 prueba;
  • elimina los archivos * .class, pero solo de la prueba jar

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <goals> <goal>test-jar</goal> </goals> <configuration> <excludes> <exclude>**/*.class</exclude> </excludes> </configuration> </execution> </executions> </plugin>

Existe una solución clara para compartir el código de prueba común entre los proyectos de Maven que utilizan el objetivo de test-jar del maven-jar-plugin plug maven-jar-plugin de maven-jar-plugin (ver here ).

Necesito hacer lo mismo con los recursos de prueba, en particular, quiero que los recursos de prueba del proyecto A estén disponibles en la ruta de clase del proyecto B durante la prueba.

Para el proyecto A hay que declarar:

<!-- Package and attach test resources to the list of artifacts: --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-antrun-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>run</goal> </goals> <configuration> <tasks> <jar destfile="${project.build.directory}/test-resources.jar"> <fileset dir="${project.basedir}/test-resources" /> </jar> </tasks> </configuration> </execution> </executions> </plugin> <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>attach-artifact</goal> </goals> <configuration> <artifacts> <artifact> <file>${project.build.directory}/test-resources.jar</file> <type>jar</type> <classifier>test-resources</classifier> </artifact> </artifacts> </configuration> </execution> </executions> </plugin>

Y en el proyecto B será dependencia normal:

<dependency> <groupId>myproject.groupId</groupId> <artifactId>myartifact</artifactId> <version>1.0-SNAPSHOT</version> <classifier>test-resources</classifier> <scope>test</scope> </dependency>

Pregunta: ¿Debería funcionar en todos los casos? ¿Es posible empaquetar recursos sin maven-antrun-plugin (usando un maven-antrun-plugin más ''liviano'')?


Solo use jar:test-jar y declare el JAR resultante como una dependencia (consulte esta guía para obtener más detalles). Y aunque no entiendo el problema de tener recursos y clases en este jar, siempre puedes excluir todos los archivos .class :

<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> <configuration> <excludes> <exclude>**/*.class</exclude> </excludes> </configuration> </plugin> </plugins> </build> </project>

Y para usarlo:

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


Ya hay un objetivo para construir un jar:test-jar de maven.

Suponiendo que necesite algo un poco más flexible, puede usar el complemento jar para empaquetar sus recursos de prueba y ejecutar esa meta con la meta principal del paquete con algo como esto.

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>jar</goal> </goals> <configuration> <classifier>test-resources</classifier> <includes> <include>**/*.whatever-you-want</include> </includes> </configuration> </execution> </executions> </plugin>

Cualquier cosa que desee que se incluya en el paquete se agregará a project-name-version-test-resources.jar cuando se ejecute el objetivo jar.

Luego, puede incluirlo en un proyecto a través de la misma dependencia que usa anteriormente.