Maven 2 Maven:复制没有子目录结构的文件
我试图使用Maven将给定文件夹中包含的所有*.xsd文件移动到另一个文件夹中,但没有源子目录结构 这就是我到目前为止所做的:Maven 2 Maven:复制没有子目录结构的文件,maven-2,resources,Maven 2,Resources,我试图使用Maven将给定文件夹中包含的所有*.xsd文件移动到另一个文件夹中,但没有源子目录结构 这就是我到目前为止所做的: <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-resources-plugin</artifactId> <version>2.3</version> <
<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>
这是我在schemas目标文件夹中需要的:
schemas-target
│- myfile.xsd
│- myfile-0.2.xsd
我自己一次又一次地用头撞那个限制 基本上:我认为没有一个只有maven的解决方案。你将不得不求助于使用一些动态的东西,比如
在maven中嵌入ant任务,在本例中为ant,如下所示:<copy todir="${project.basedir}/schemas-target" flatten="true"> <fileset dir="${project.basedir}/schemas-source"> <include name="**/*.xsd"/> </fileset> </copy>
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; } }
有一种方法。。而且它真的很单调和累赘。只有当你想完全专业化的时候才去实现它。肖恩的答案是最简单的解决方案 问题是您必须指定每个目录,然后对其中的文件使用通配符
<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>
复印罐
过程源
复制资源
${basedir}/target/classes
${basedir}/resources
xyz.jar
${basedir}/as-u-like-it
abc.jar
谢谢,我尝试了Maven Antrun插件,但我不知道有哪个属性起作用。不幸的是,Antrun插件是我执行类似任务的唯一方法……似乎“展平”应该作为Maven resources插件的复制资源目标的一个设置。展平是一个开始,但通常我想设置一个“开始路径”,比如当我扩展WAR归档文件时,我可能想丢失web inf/类,但保留包结构。但我想这可以通过使用映射器来实现:您也可以使用
move
而不是copy
,这也应该删除源目录/文件。
<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>