java - 有没有办法强制 Maven 增量复制资源文件夹更改?

标签 java maven m2eclipse

我正在使用 Maven 2.2.1 和 m2eclipse。

我有两个资源文件夹。

当我保存对任何资源文件夹中的任何文件的更改时,Maven 增量构建开始并将两个资源文件夹中的所有文件重新复制到目标文件夹。

如果资源文件夹中的文件数量相对较少,则此行为会很好 - 但复制可能需要几分钟时间。

有没有办法强制 Maven 在其增量构建中更具选择性并仅复制那些已更改的资源?

最佳答案

我将问题追查到 org.codehaus.plexus.util.FileUtils.copyFile() 方法。 maven-resource-plugin调用的就是这个方法,最终复制资源; copyFile() 方法采用“覆盖”参数,资源插件 确实 传入该参数(默认值确实为 false),但是...

如果传递的过滤器包装器列表非空,则 copyFile() 方法忽略“覆盖”参数!如果您将资源的过滤设置为 true,则此列表确实是非空的。

我可以理解 copyFile() 忽略“覆盖”背后的原因:仅仅因为目标文件较新并不意味着新的过滤文件将相同(即资源文件中变量的值可能已更改,因为最后过滤)。
忽略“覆盖”标志对于 FileUtils 实现者来说是“方便的”。但这是有代价的;不必要地更新单个资源文件会触发耗时但冗余的过程(即在我的情况下重建具有依赖性的 jar)。这可能只有几秒钟,但足以中断密集的代码-编译-测试周期的流程。

我在 FileUtils 上寻找 Unresolved 错误,但没有找到任何错误。这让我很烦恼,所以我不得不追查它,但我现在不能花更多时间在这上面……几天后我想提交一份错误报告(可能会更快地实现正确的解决方案);如果有人可以发布指向相应错误跟踪/报告系统的链接,我将不胜感激。

关于java - 有没有办法强制 Maven 增量复制资源文件夹更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3970157/

相关文章:

java - 在运行时在 java 中执行 Groovy 代码

java - 简单整除性

email - Maven 电子邮件插件

java - 哪个M2Eclipse

maven - 版本插件不更新子模块,只更新父模块

eclipse - Eclipse 未选取 Maven 生成源文件夹

java - 如何使用 Spring Boot 嵌入式 ldap 服务器向 LDIF 文件添加条目

java - 从短信中提取 URL

java - 使用 maven 插件部署 context.xml 文件

eclipse - 在 Eclipse 中创建项目后更改 Maven Archetype?