Maven:复制没有子目录结构的文件

Gui*_*ido 25 resources maven-2

我试图使用Maven将给定文件夹中包含的所有*.xsd文件移动到另一个文件夹,但没有源子目录结构.

这是我到目前为止:

<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>
Run Code Online (Sandbox Code Playgroud)

它(几乎)正在工作.唯一的问题是它保留了源子目录结构,而我需要删除该层次结构并将所有xsd文件放在目标文件夹中.例:

这是我在schemas-source文件夹中的内容:

schemas-source
 ?- current
 ?    ?- 0.3
 ?        ?- myfile.xsd
 ?- old
      ?- 0.2
          ?- myfile-0.2.xsd
Run Code Online (Sandbox Code Playgroud)

这就是我在schemas-target文件夹中需要的东西:

schemas-target
 ?- myfile.xsd
 ?- myfile-0.2.xsd
Run Code Online (Sandbox Code Playgroud)

Sea*_*oyd 24

我一次又一次地对抗这种限制.

基本上:我不认为只有maven解决方案.你将不得不求助于使用像动态一样的东西


Kee*_*gam 12

有一种方式..它真的很单调和繁琐.只有在想要完全成熟时才实施它.肖恩的答案是最简单的解决方案.

问题是您必须指定每个目录,然后使用通配符作为内部文件.

<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>
Run Code Online (Sandbox Code Playgroud)