java - pom - maven-resources-plugin example
Copiar mĂșltiples directorios de recursos a directorios de destino independientes con maven (6)
El plugin de recursos de Maven :
Este objetivo requiere que configure los recursos que se copiarán y especifique el outputDirectory.
Copie dos (o más) directorios de recursos externos dentro de la base de datos al directorio de salida de compilación usando maven (vea blah
y uggh
).
${basedir}/
- pom.xml
- blah/
- uggh/
- src/
- main/..
- test/..
- target/
- classes/..
- blah/
- uggh/
Por ejemplo, dada la estructura de directorios anterior, copie blah
y uggh
en el directorio de destino usando maven. Es fácil copiar uno u otro, sin embargo, el complemento solo acepta un único directorio de salida. Si especifica el directorio de target
y ambos directorios como recursos, el contenido de cada directorio se copia al target
pero no a los directorios.
El uso adicional del complemento sobrescribe la inicial. Además, he intentado especificar toda la basedir
y solo incluir los directorios deseados. Esto no copia nada.
Aquí hay un ejemplo de copiar un solo directorio:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/blah</outputDirectory>
<resources>
<resource>
<directory>blah</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Aquí es donde termina el archivo:
<outputDirectory>${basedir}/target/blah</outputDirectory>
Aquí es donde se copia de:
<directory>src/main/otherresources</directory>
Habría una etiqueta <include>
o <includes>
para indicar el nombre del archivo
Múltiplos
Necesita múltiples <execution>
s con diferentes <id>
para múltiples carpetas:
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.6</version>
<executions>
<execution>
<id>copy-resources-1</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/blah</outputDirectory>
<resources>
<resource>
<directory>blah</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
<execution>
<id>copy-resources-2</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${basedir}/target/ughh</outputDirectory>
<resources>
<resource>
<directory>ughh</directory>
<filtering>true</filtering>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
Esta es la solución más simple que he encontrado y está funcionando ...
<build>
<plugins>
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<configuration>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>${basedir}/src/main/java/org/mc2/mymusic/gui/main/Menu/resources</directory>
<targetPath>${basedir}/target/classes/org/mc2/mymusic/gui/main/Menu/resources</targetPath>
<filtering>false</filtering>
</resource>
</resources>
</build>
Marco
Leyendo tu ejemplo, no creo que tengas que incluir y configurar el plugin maven-resource-plugin. Simplemente agregue esos elementos de recursos a la etiqueta <build><resources/>
. Consulte http://maven.apache.org/ref/3.1.1/maven-model/maven.html#class_resource qué otras etiquetas puede usar.
Para mí, este funciona bien en Maven 3:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.5</version>
<executions>
<execution>
<id>custom-resources</id>
<phase>process-resources</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<resources>
<resource>
<targetPath>${basedir}/target/blah</targetPath>
<directory>blah</directory>
<filtering>true</filtering>
</resource>
<resource>
<targetPath>${basedir}/target/uggh</targetPath>
<directory>uggh</directory>
<filtering>false</filtering>
</resource>
<encoding>UTF-8</encoding>
</configuration>
</execution>
</executions>
</plugin>
Puedes usar patrones de estilo de hormigas
<plugin>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<executions>
<execution>
<id>copy-resources</id>
<phase>validate</phase>
<goals>
<goal>copy-resources</goal>
</goals>
<configuration>
<outputDirectory>${project.build.directory}</outputDirectory>
<resources>
<resource>
<directory>${basedir}</directory>
<includes>
<include>blah/**</include>
<include>uggh/**</include>
</includes>
</resource>
</resources>
</configuration>
</execution>
</executions>
</plugin>
<resources>
<resource>
<directory>${basedir}/src/scripts</directory>
<includes>
<include>data-octopus.ps1</include>
</includes>
<targetPath>${basedir}/target/data</targetPath>
</resource>
<resource>
<directory>${basedir}/src/scripts</directory>
<includes>
<include>service-octopus.ps1</include>
</includes>
<targetPath>${basedir}/target/service</targetPath>
</resource>
</resources>
</plugins>
...
</plugins>