我正在处理一个多模块项目。我们在几个其他模块中使用来自一个模块的appCtx.xml。
当前问题是它们不总是与彼此同步。
当有人修改文件并构建项目时,执行该操作的人可能会忘记将其复制到另一个模块,这会导致问题。
如何将项目A中src/main/resources中的appCtx.xml复制到项目B的src/main/resources中?
我正在处理一个多模块项目。我们在几个其他模块中使用来自一个模块的appCtx.xml。
当前问题是它们不总是与彼此同步。
当有人修改文件并构建项目时,执行该操作的人可能会忘记将其复制到另一个模块,这会导致问题。
如何将项目A中src/main/resources中的appCtx.xml复制到项目B的src/main/resources中?
你可以使用 Maven资源插件: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>
这将在生成资源阶段从一个项目(位于同一源树中)复制文件。您可以根据自己的需要进行调整。
如果这些项目不是同时构建的,则从一个项目复制到另一个项目可能会导致不稳定的构建,但以上方法适用于始终一起构建的项目。
../other_project/src/blah/blah
假设两个项目都当前存储在我的本地磁盘上?如果源项目没有本地克隆,但资源应从Artifactory中的快照获取,我该怎么做? - Benjamin Zach另一种可能更为更新的方法是使用maven-dependency-plugin
,并使用unpack
目标和fileMappers
来重命名解压后文件的目标位置。
这个官方文档提供了一个例子,对我帮助很大:https://maven.apache.org/plugins/maven-dependency-plugin/examples/unpacking-filemapper.html