kbuntrock commented on code in PR #91: URL: https://github.com/apache/maven-build-cache-extension/pull/91#discussion_r1315095649
########## src/main/java/org/apache/maven/buildcache/checksum/MavenProjectInput.java: ########## @@ -165,45 +185,101 @@ public MavenProjectInput( this.repoSystem = repoSystem; this.remoteCache = remoteCache; Properties properties = project.getProperties(); - this.dirGlob = properties.getProperty(CACHE_INPUT_GLOB_NAME, config.getDefaultGlob()); + this.projectGlob = properties.getProperty(CACHE_INPUT_GLOB_NAME, config.getDefaultGlob()); this.processPlugins = Boolean.parseBoolean(properties.getProperty(CACHE_PROCESS_PLUGINS, config.isProcessPlugins())); this.tmpDir = System.getProperty("java.io.tmpdir"); - org.apache.maven.model.Build build = project.getBuild(); - filteredOutPaths = new ArrayList<>(Arrays.asList( - normalizedPath(build.getDirectory()), // target by default - normalizedPath(build.getOutputDirectory()), - normalizedPath(build.getTestOutputDirectory()))); + this.baseDirectoryGlobPrefix = baseDirPath.toString().replace("\\", "/") + "/"; + + addDefaultExcludeSection(project); List<Exclude> excludes = config.getGlobalExcludePaths(); for (Exclude excludePath : excludes) { - filteredOutPaths.add(Paths.get(excludePath.getValue())); + addToExcludedSection(excludePath.getValue(), true); } for (String propertyName : properties.stringPropertyNames()) { if (propertyName.startsWith(CACHE_EXCLUDE_NAME)) { String propertyValue = properties.getProperty(propertyName); - Path path = Paths.get(propertyValue); - filteredOutPaths.add(path); + addToExcludedSection(propertyValue, true); + if (LOGGER.isDebugEnabled()) { LOGGER.debug( - "Adding an excludePath from property '{}', values is '{}', path is '{}' ", - propertyName, - propertyValue, - path); + "Adding an excludePath from property '{}', value is '{}'", propertyName, propertyValue); } } } CacheUtils.debugPrintCollection( - LOGGER, - filteredOutPaths, - "List of excluded paths (checked either by fileName or by startsWith prefix)", - "Path entry"); + LOGGER, inputExcludePathMatcherString, "List of excluded glob patterns", "Pattern"); this.fileComparator = new PathIgnoringCaseComparator(); } + private void addDefaultExcludeSection(MavenProject project) { + + Build build = project.getBuild(); + Path buildDirectoryPath = normalizedPath(build.getDirectory()); + Path outputDirectoryPath = normalizedPath(build.getOutputDirectory()); + Path testOutputDirectoryPath = normalizedPath(build.getTestOutputDirectory()); + addToExcludedSection( + convertToPathMatcherFileSeperator(buildDirectoryPath.toString()) + GLOB_SX_FULL_SUB_TREE, + false); // target by default + + if (!outputDirectoryPath.startsWith(buildDirectoryPath)) { + addToExcludedSection( + convertToPathMatcherFileSeperator(outputDirectoryPath.toString()) + GLOB_SX_FULL_SUB_TREE, + false); // target/classes by default + } + if (!testOutputDirectoryPath.startsWith(buildDirectoryPath)) { + addToExcludedSection( + convertToPathMatcherFileSeperator(testOutputDirectoryPath.toString()) + GLOB_SX_FULL_SUB_TREE, + false); // target/test-classes by default + } + } + + private String convertToPathMatcherFileSeperator(String path) { + return path.replace("\\", "/"); + } + + /** + * Add a value from the excluded section list to the directories and/or the filenames ban list. + * @param excludedValue a value from the exclude list + */ + private void addToExcludedSection(String excludedValue, boolean addProjectBaseDir) { Review Comment: it's because of the default exclude sections. Their values have already the project dir prepended. But I'm open to suggestions. -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: issues-unsubscr...@maven.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org