我使用的是Maven 2.2.1和m2
eclipse.
我有两个资源文件夹.
当我将更改保存到任何资源文件夹中的任何文件时,Maven增量版本将启动并将两个资源文件夹中的所有文件重新复制到目标文件夹.
如果资源文件夹中的文件数量相对较少,则这种行为会很好,但是拷贝可能需要几分钟的时间.
有没有办法强制maven在增量版本中更具选择性,只复制那些被改变的资源?
解决方法
我将问题追溯到org.codehaus.plexus.util.FileUtils.copyFile()方法. maven-resource-plugin调用的方法是最终复制资源; copyFile()方法需要一个’overwrite’参数,资源插件通过它(默认值是false),但是… 如果传递的过滤器包装器列表非空,则copyFile()方法将忽略“覆盖”参数.如果您的资源的过滤设置为true,则此列表确实不为空. 我可以理解copyFile()忽略“覆盖”背后的原因:只是因为目标文件较新,并不意味着新的过滤文件将是相同的(即资源文件中变量的值可能已经更改,因为最后一次过滤). 忽略“覆盖”标志对于FileUtils实现者来说是“方便的”.但这是一个很大的代价;不必要地更新的单个资源文件可以触发耗时但冗余的进程(即,在我的情况下重建与依赖关系的jar).这可能只有几秒钟,但足以破坏密集的代码编译测试周期的流程. 我在FileUtils上找到了开放的bug,但没有找到任何的.这是在欺骗我,所以我不得不追逐它,但我现在不能花更多的时间…在几天内,我想提交一个错误报告(可能更快地实现正确的解决方案);如果有人可以发布链接到相应的错误跟踪/报告系统,我将不胜感激.