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

24

我正在处理一个多模块项目。我们在几个其他模块中使用来自一个模块的appCtx.xml。

当前问题是它们不总是与彼此同步。

当有人修改文件并构建项目时,执行该操作的人可能会忘记将其复制到另一个模块,这会导致问题。

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


你能添加一个直接依赖吗? - Gray
1
另一个想法是使用您的版本控制系统来帮助。我不知道您是否使用SVN,但请参见:https://dev59.com/AnM_5IYBdhLWcg3wXyHZ。 - Gray
2个回答

56

你可以使用 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>

这将在生成资源阶段从一个项目(位于同一源树中)复制文件。您可以根据自己的需要进行调整。

如果这些项目不是同时构建的,则从一个项目复制到另一个项目可能会导致不稳定的构建,但以上方法适用于始终一起构建的项目。


1
我理解得对吗,路径../other_project/src/blah/blah假设两个项目都当前存储在我的本地磁盘上?如果源项目没有本地克隆,但资源应从Artifactory中的快照获取,我该怎么做? - Benjamin Zach
@BenjaminZach,你解决了吗?我有一些文件在“commons” jar中,而这个jar包被包含在其他项目中。我该如何将commons jar中的文件复制到其他项目中? - Jimit Raithatha

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接