Details
-
Bug
-
Status: Closed
-
Major
-
Resolution: Fixed
-
None
-
None
Description
The maven resources plugin uses https://github.com/apache/maven-filtering/blob/master/src/main/java/org/apache/maven/shared/filtering/DefaultMavenResourcesFiltering.java to copy resources, but that component has some subtile flaws reported here:
The problematic part is the usage of BuildContext#newScanner that already mentions in the javadoc that passing ignoreDelta to neScanner might not reveal all required items for copy-resources form A -> B and instead BuildContext#isUpTodate should be used.
Just from a quick look I assume that part of code actually wants to use something like this:
DirectoryScanner ds = new DirectoryScanner() { @Override protected boolean isSelected(String name, File file) { if (file.isFile() && buildContext.isUptodate(getTargetFile(file), file)) { return false; } return true; } }; ds.setBasedir(basedir);
That way all the code that currently checks for if output directory existed before can also be removed what is another issue because it leads to a full resources copy even if source+target are already even if a single class file is changed while the idea seems more that if the output was not there it should not try to be incremental!