复制具有包含部分输入路径的输出路径的资源

时间:2018-07-27 11:35:16

标签: maven maven-resources-plugin

说两个模块mod1mod2具有以下结构:

root
├── mod1/src/main/resources/db-migrations
|   ├── v1
|   |   ├── a.sql
|   |   └── b.sql
|   └── v2
|       ├── c.sql
|       └── d.sql
|
└── mod2/src/main/resources/db-migrations
    ├── v1
    |   ├── e.sql
    |   └── f.sql
    └── v2
        ├── g.sql
        └── h.sql

我想将所有文件从db-migrations复制到单个顶级目录中,但是首先按版本分组,然后按模块分组。因此输出应如下所示:

root/all-db-migrations
├── v1
|   ├── mod1
|   |   ├── a.sql
|   |   └── b.sql
|   └── mod2
|       ├── e.sql
|       └── f.sql
└── v2
    ├── mod1
    |   ├── c.sql
    |   └── d.sql
    └── mod2
        ├── g.sql
        └── h.sql

如果目录结构不是相反的(版本之前的模块名称),那么使用maven资源插件就很容易,只需为每个模块复制整个db-migrations目录:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-database-migrations</id>
            <phase>process-resources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>../all-db-migrations/${project.artifactId}
                </outputDirectory>
                <resources>
                    <resource>
                        <directory>src/main/resources/db-migrations</directory>
                        <filtering>false</filtering>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

但是,我找不到执行如上所述的复制操作的解决方案。

0 个答案:

没有答案