I am trying to use Maven to move all the *.xsd files contained in a given folder to another one, but without the source subdirectory structure.
This is what I have so far:
<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>
And it is (almost) working. The only problem is that it keeps the source subdirectory structure, while I need to remove that hierarchy and put all the xsd files in the target folder. Example:
This is what I have in the schemas-source folder:
schemas-source │- current │ │- 0.3 │ │- myfile.xsd │- old │- 0.2 │- myfile-0.2.xsd
and this is what I'd need in the schemas-target folder:
schemas-target │- myfile.xsd │- myfile-0.2.xsd
I banged my head against that restriction myself, again and again.
Basically: I don't think there's a maven only solution. You will have to resort to using something dynamic like
The Maven Antrun Plugin
Embed ant tasks in maven, in this case an ant copy task, something like this:
<copy todir="${project.basedir}/schemas-target" flatten="true"> <fileset dir="${project.basedir}/schemas-source"> <include name="**/*.xsd"/> </fileset> </copy>
The GMaven plugin Lets you execute Groovy code from your pom, something like this:
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; } }
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With