在 maven 中将文件从一个项目复制到另一个项目

2022-09-02 00:28:23

我正在做一个多模块项目。我们正在使用 appCtx.xml从其他几个模块中的一个模块。

目前的问题是它们并不总是彼此同步。

当有人修改文件并且项目构建时,就会发生这种情况,这样做的人可能会忘记复制到另一个模块并导致问题。

如何将 src/main/resources 中的 appCtx.xml从项目 A 复制到项目 B 中的 src/main/resources?


答案 1

您可以使用maven resources插件执行此操作:copy-resources,如下所示:

<plugin>
    <artifactId>maven-resources-plugin</artifactId>
    <executions>
        <execution>
            <id>copy-appCtx</id>
            <phase>generate-resources</phase>
            <goals>
                <goal>copy-resources</goal>
            </goals>
            <configuration>
                <outputDirectory>${project.build.directory}/src/blahhere</outputDirectory>
                <overwrite>true</overwrite>
                <resources>
                    <resource>
                        <directory>../other_project/src/blah/blah</directory>
                        <includes>
                            <include>appCtx.xml</include>
                        </includes>
                    </resource>
                </resources>
            </configuration>
        </execution>
    </executions>
</plugin>

这将从一个项目(在同一源树上共置)复制文件,作为生成资源阶段的一部分。您可以根据需要进行调整。

如果项目不是一次生成所有项目,则从一个项目复制到另一个项目可能会导致不稳定的生成,但上述方法适用于始终一起生成的项目。


答案 2

另一种可能更新的方法是使用目标并重命名解压缩文件的目标。maven-dependency-pluginunpackfileMappers

这个带有示例的官方文档对我帮助很大:https://maven.apache.org/plugins/maven-dependency-plugin/examples/unpacking-filemapper.html


推荐