From 04301c203d99bfee77f78aaae409fc16572ba3c7 Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 19 Feb 2026 21:26:12 +0100 Subject: [PATCH 1/6] Bug: use change detecton strategies Use the change detection strategy from maven-filtering Fixes #453 --- pom.xml | 3 +- .../plugins/resources/ResourcesMojo.java | 45 ++++++++++++++++++- 2 files changed, 46 insertions(+), 2 deletions(-) diff --git a/pom.xml b/pom.xml index aaff0bf..56cfcf5 100644 --- a/pom.xml +++ b/pom.xml @@ -71,10 +71,11 @@ under the License. - 3.4.0 + 3.4.1-SNAPSHOT 3.9.12 8 2025-11-22T21:31:20Z + 3.6.0 3.9.1 diff --git a/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java b/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java index 27dd610..f632440 100644 --- a/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java +++ b/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java @@ -39,6 +39,7 @@ import org.apache.maven.plugins.annotations.Mojo; import org.apache.maven.plugins.annotations.Parameter; import org.apache.maven.project.MavenProject; +import org.apache.maven.shared.filtering.ChangeDetection; import org.apache.maven.shared.filtering.MavenFilteringException; import org.apache.maven.shared.filtering.MavenResourcesExecution; import org.apache.maven.shared.filtering.MavenResourcesFiltering; @@ -156,10 +157,31 @@ public class ResourcesMojo extends AbstractMojo { * Overwrite existing files even if the destination files are newer. * * @since 2.3 + * @deprecated Use {@link #changeDetection} instead. */ + @Deprecated @Parameter(defaultValue = "false") private boolean overwrite; + /** + * The strategy to use for change detection. Supported values are "content" (default), "timestamp", "combined" + * and "always" (equivalent of {@link #overwrite set to {@code true}}). + * + * Strategies and their behavior are as follows: + * + * + * Note: default value of this parameter is handled programmatically (as "content") for programmatic detection reasons. + * + * @since 3.5.0 + */ + @Parameter + private String changeDetection; + /** * Copy any empty directories included in the Resources. * @@ -323,7 +345,7 @@ public void execute() throws MojoExecutionException { mavenResourcesExecution.setInjectProjectBuildFilters(false); mavenResourcesExecution.setEscapeString(escapeString); - mavenResourcesExecution.setOverwrite(overwrite); + mavenResourcesExecution.setChangeDetection(getChangeDetection()); mavenResourcesExecution.setIncludeEmptyDirs(includeEmptyDirs); mavenResourcesExecution.setSupportMultiLineFiltering(supportMultiLineFiltering); mavenResourcesExecution.setFilterFilenames(fileNameFiltering); @@ -350,6 +372,27 @@ public void execute() throws MojoExecutionException { } } + private ChangeDetection getChangeDetection() { + if (changeDetection != null) { + switch (changeDetection) { + case "content": + return ChangeDetection.CONTENT; + case "timestamp": + return ChangeDetection.TIMESTAMP; + case "combined": + return ChangeDetection.COMBINED; + case "always": + return ChangeDetection.ALWAYS; + default: + throw new IllegalArgumentException("Invalid value for changeDetection: " + changeDetection); + } + } else if (overwrite) { + return ChangeDetection.ALWAYS; + } else { + return ChangeDetection.CONTENT; + } + } + /** * This solves https://issues.apache.org/jira/browse/MRESOURCES-99.
* BUT:
From 2b9802ef97750adab881fa46f3f5ade52ecec11f Mon Sep 17 00:00:00 2001 From: Tamas Cservenak Date: Thu, 19 Feb 2026 21:32:42 +0100 Subject: [PATCH 2/6] Clearly state that overwrite is ignored if new param is set. --- .../java/org/apache/maven/plugins/resources/ResourcesMojo.java | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java b/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java index f632440..decc906 100644 --- a/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java +++ b/src/main/java/org/apache/maven/plugins/resources/ResourcesMojo.java @@ -165,7 +165,8 @@ public class ResourcesMojo extends AbstractMojo { /** * The strategy to use for change detection. Supported values are "content" (default), "timestamp", "combined" - * and "always" (equivalent of {@link #overwrite set to {@code true}}). + * and "always" (equivalent of {@link #overwrite set to {@code true}}). If this parameter is specified, + * it will override the value of {@link #overwrite}. * * Strategies and their behavior are as follows: *