tutorial instalar descarga maven

instalar - En Maven, ¿cómo excluir recursos del contenedor generado?



maven tutorial (8)

Cuando creo un jar ejecutable con dependencias (usando esta guía), todos los archivos de propiedades también se empacan en ese jar. ¿Cómo evitar que suceda? Gracias.

Archivos de propiedades desde donde? ¿Tu jar principal? Dependencias?

En el primer caso, poner recursos bajo src/test/resources como se sugiere es probablemente la opción más simple y más directa.

En el caso posterior, deberá crear un descriptor de ensamblaje personalizado con unpackOptions excludes/exclude unpackOptions especiales en unpackOptions .

Cuando creo un jar ejecutable con dependencias (usando esta guía ), todos los archivos de propiedades también se empacan en ese jar. ¿Cómo evitar que suceda? Gracias.

ACTUALIZACIÓN: Intenté excluirlos utilizando el complemento de recursos Maven , pero luego mi aplicación no encontrará los archivos de propiedades cuando los ejecuto en Eclipse (haga clic derecho en el módulo -> Ejecutar como -> Aplicación Java)

ACTUALIZACIÓN: gracias por sus útiles respuestas. Creo que sería mejor que pasara tiempo aprendiendo Maven, por ahora solo elijo la solución más simple.



Esto requiere exactamente el uso del plugin Maven JAR

Por ejemplo, si quiere excluir todo en src/test/resources/ del jar final, ponga esto:

<build> <plugins> <!-- configure JAR build --> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3.1</version> <configuration> <excludes> <exclude>src/test/resources/**</exclude> </excludes> </configuration> </plugin> ...

Los archivos bajo src/test/resources/ seguirán estando disponibles en class-path, simplemente no estarán en el JAR resultante.


Excluya un patrón de archivo específico durante la creación de jar maven usando maven-jar-plugin.

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-jar-plugin</artifactId> <version>2.3</version> <configuration> <excludes> <exclude>**/*.properties</exclude> <exclude>**/*.xml</exclude> <exclude>**/*.exe</exclude> <exclude>**/*.java</exclude> <exclude>**/*.xls</exclude> </excludes> </configuration> </plugin>


Otra posibilidad es utilizar el complemento Maven Shade , por ejemplo, para excluir un archivo de propiedades de registro utilizado solo localmente en su IDE:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>${maven-shade-plugin-version}</version> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <filters> <filter> <artifact>*:*</artifact> <excludes> <exclude>log4j2.xml</exclude> </excludes> </filter> </filters> </configuration> </execution> </executions> </plugin>

Sin embargo, esto excluirá los archivos de cada artefacto, por lo que podría no ser factible en cada situación.


Para excluir cualquier archivo de un directorio jar / target puede usar la etiqueta <excludes> en su archivo pom.xml.

En el siguiente ejemplo, no se incluirán todos los archivos con la extensión .properties :

<build> <resources> <resource> <directory>src/main/resources</directory> <excludes> <exclude>*.properties</exclude> </excludes> <filtering>false</filtering> </resource> </resources> </build>


Por convención, el directorio src/main/resources contiene los recursos que usará la aplicación. Entonces Maven los incluirá en el JAR final.

Por lo tanto, en su aplicación, tendrá acceso a ellos utilizando el método getResourceAsStream() , ya que los recursos se cargan en la ruta de clase.

Si necesita tenerlos fuera de su aplicación, no los almacene en src/main/resources ya que Maven los incluirá. Por supuesto, puede excluirlos (usando el enlace proporcionado por chkal ), pero es mejor crear otro directorio (por ejemplo, src/main/external-resources ) para mantener las convenciones relacionadas con el directorio src/main/resources .

En este último caso, deberá entregar los recursos de forma independiente como su archivo JAR (esto se puede lograr utilizando el complemento de ensamblaje). Si necesita acceder a ellos en su entorno Eclipse, vaya a las Properties de su proyecto, luego en Java Build Path en la pestaña Sources , agregue la carpeta (por ejemplo, src/main/external-resources ). Eclipse luego agregará este directorio en el classpath.


Coloque esos archivos de propiedades en src/test/resources . Los archivos en src/test/resources están disponibles en Eclipse automáticamente a través de eclipse:eclipse pero no serán incluidos en el paquete JAR de Maven.