pom plugin example maven-2 resources

maven-2 - example - maven-resources-plugin version



Maven: copia archivos sin estructura de subdirectorio (2)

Estoy intentando usar Maven para mover todos los archivos * .xsd contenidos en una carpeta dada a otra, pero sin la estructura del subdirectorio de origen.

Esto es lo que tengo hasta ahora:

<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.3</version> <executions> <execution> <id>move-schemas</id> <phase>generate-sources</phase> <goals> <goal>resources</goal> </goals> <configuration> <outputDirectory>${basedir}/schemas-target</outputDirectory> </configuration> </execution> </executions> </plugin> ... <resources> <resource> <directory>${basedir}/schemas-source</directory> <includes> <include>**/*.xsd</include> </includes> </resource> </resources>

Y está (casi) funcionando. El único problema es que mantiene la estructura del subdirectorio de origen, mientras que necesito eliminar esa jerarquía y colocar todos los archivos xsd en la carpeta de destino. Ejemplo:

Esto es lo que tengo en la carpeta schemas-source:

schemas-source │- current │ │- 0.3 │ │- myfile.xsd │- old │- 0.2 │- myfile-0.2.xsd

y esto es lo que necesitaría en la carpeta de esquemas de destino:

schemas-target │- myfile.xsd │- myfile-0.2.xsd


Hay un camino ... y es realmente monótono y engorroso. Implementalo solo si quieres ser completamente pervertido. La respuesta de Sean es la solución más fácil.

El problema es que tiene que especificar cada directorio y luego usar comodines para los archivos que contiene.

<execution> <id>copy-jars</id> <phase>process-sources</phase> <goals> <goal>copy-resources</goal> </goals> <configuration> <outputDirectory>${basedir}/target/classes</outputDirectory> <resources> <resource> <directory>${basedir}/resources</directory> <includes> <include>xyz.jar</include> </includes> </resource> <resource> <directory>${basedir}/as-u-like-it</directory> <includes> <include>abc.jar</include> </includes> </resource> </configuration>


Me golpeé la cabeza contra esa restricción, una y otra vez.

Básicamente: no creo que haya una solución sólo para expertos. Tendrás que recurrir a usar algo dinámico como

  • El Plugin Maven Antrun
    Incrustar tareas ant en Maven, en este caso una tarea ant copy , algo como esto:

    <copy todir="${project.basedir}/schemas-target" flatten="true"> <fileset dir="${project.basedir}/schemas-source"> <include name="**/*.xsd"/> </fileset> </copy>

  • El complemento GMaven te permite ejecutar código Groovy desde tu pom, algo como esto:

    new File(pom.basedir, ''schemas-source'').eachFileRecurse(FileType.FILES){ if(it.name.endsWith(''.xsd'')){ new File(pom.basedir, ''schemas-target/${it.name}'').text = it.text; } }