webapp proyecto mvn generate example crear arquetipos arquetipo archetype agregar java maven maven-2 maven-3 multi-module

java - proyecto - maven-archetype-webapp



Especifique recursos comunes en un proyecto de varios módulos de maven (5)

¿Hay alguna forma de compartir recursos entre los módulos de un proyecto principal en Maven? Por ejemplo, me gustaría especificar un archivo log4j.properties para todos los módulos en un proyecto de varios módulos de Maven.

En general, uso Eclipse IDE para crear el proyecto principal seleccionando un proyecto general y luego lo convierto en un proyecto Maven especificando un paquete de pom . Esto crea una estructura de proyecto "limpia" sin las carpetas src y etc. Me pregunto dónde se debería poner ese recurso compartido en este caso.

EDIT1 : Me gustaría poner los recursos comunes en el proyecto principal.


Sí, parece como una posible solución. Pero me interesaba si es posible especificar estos recursos en el proyecto principal (sin introducir un módulo adicional) ya que el proyecto principal especifica todas las dependencias comunes y las configuraciones de Maven para los módulos secundarios, creo que el proyecto principal es el lugar más adecuado También por los recursos comunes.

En el caso del tipo de paquete pom , cuando se especifique el paquete objetivo para administrar sus recursos compartidos, simplemente agregue el siguiente (verifique las carpetas) en la sección de compilación del archivo pom:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-config-files</id> <phase>package</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${project.build.directory}/logconfig</outputDirectory> <resources> <resource> <filtering>false</filtering> <directory>${project.basedir}/src/main/resources</directory> </resource> </resources> </configuration> </execution> </executions> </plugin>


Creo que puedes agregar los recursos y / o elementos de recursos de prueba a tu pom. Por ejemplo, para acceder a un directorio de recursos de prueba adicional añada:

<testResources> <testResource> <directory>src/test/resources</directory> </testResource> <testResource> <directory>../global/src/test/resources</directory> </testResource> </testResources>

ver Maven - Anular carpeta de recursos de prueba


Me las arreglé para que funcione así:

Creo un archivo project / assembly / test / resources / META-INF / persistence.xml, y lo agrego a mi pom.xml:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <executions> <execution> <id>copy-test-persistence-xml-resources</id> <phase>process-test-sources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>src/</outputDirectory> <resources> <resource> <directory>${project.parent.basedir}/assembly/</directory> <filtering>true</filtering> </resource> </resources> </configuration> </execution> </executions> </plugin>


Otra posibilidad es usar un paquete de recursos remotos. Podrías configurarlo en el proyecto padre. En este ejemplo quise copiar algunos archivos solo para pruebas. Si usa esto, necesitará crear el paquete en otro proyecto.

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-remote-resources-plugin</artifactId> <version>1.5</version> <configuration> <resourceBundles> <resourceBundle>es.sca:myBundle:1.0.0</resourceBundle> </resourceBundles> <attachToMain>false</attachToMain> <attachToTest>true</attachToTest> <appendedResourcesDirectory>${basedir}/src/test/resources</appendedResourcesDirectory> </configuration> <executions> <execution> <goals> <goal>process</goal> </goals> </execution> </executions> </plugin>


Yo crearía un módulo "base" adicional (proyecto), empaquetado "jar", que contiene los recursos comunes en src/main/resources . Luego haría que los otros módulos dependieran de ese proyecto. Ahora ven los recursos comunes en sus classpaths.