Uploaded image for project: 'Maven Shared Components'
  1. Maven Shared Components
  2. MSHARED-1285

DefaultMavenResourcesFiltering uses BuildContext in a way that fails sometimes

    XMLWordPrintableJSON

Details

    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:

      https://github.com/eclipse-m2e/m2e-core/discussions/1468

      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!

      Attachments

        Activity

          People

            elharo Elliotte Rusty Harold
            laeubi Christoph Läubrich
            Votes:
            5 Vote for this issue
            Watchers:
            7 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: