File project.diff of Package maven-resources-plugin

--- maven-resources-plugin-bootstrap-resources.patch.orig
+++ maven-resources-plugin-bootstrap-resources.patch
@@ -1,8 +1,11 @@
---- maven-resources-plugin-3.3.1/src/main/filtered-resources/META-INF/maven/org.apache.maven.plugins/maven-resources-plugin/plugin-help.xml	1970-01-01 01:00:00.000000000 +0100
-+++ maven-resources-plugin-3.3.1/src/main/filtered-resources/META-INF/maven/org.apache.maven.plugins/maven-resources-plugin/plugin-help.xml	2023-09-14 08:28:18.322786139 +0200
-@@ -0,0 +1,573 @@
+--- a/src/main/filtered-resources/META-INF/maven/org.apache.maven.plugins/maven-resources-plugin/plugin-help.xml	1970-01-01 01:00:00.000000000 +0100
++++ b/src/main/filtered-resources/META-INF/maven/org.apache.maven.plugins/maven-resources-plugin/plugin-help.xml	2025-06-30 18:59:51.563505752 +0200
+@@ -0,0 +1,629 @@
 +<?xml version="1.0" encoding="UTF-8"?>
-+<plugin>
++
++<!-- Generated by maven-plugin-tools 4.0 (for help mojo with limited elements)-->
++
++<plugin xmlns="http://maven.apache.org/PLUGIN/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:location="http://maven.apache.org/PLUGIN/2.0.0 https://maven.apache.org/xsd/plugin-2.0.0.xsd">
 +  <name>${project.name}</name>
 +  <description>${project.description}</description>
 +  <groupId>${project.groupId}</groupId>
@@ -13,18 +16,14 @@
 +    <mojo>
 +      <goal>copy-resources</goal>
 +      <description>Copy resources of the configured plugin attribute resources</description>
-+      <requiresDirectInvocation>false</requiresDirectInvocation>
-+      <requiresProject>true</requiresProject>
-+      <requiresReports>false</requiresReports>
++      <directInvocationOnly>false</directInvocationOnly>
++      <projectRequired>true</projectRequired>
 +      <aggregator>false</aggregator>
-+      <requiresOnline>false</requiresOnline>
++      <onlineRequired>false</onlineRequired>
 +      <inheritedByDefault>true</inheritedByDefault>
 +      <implementation>org.apache.maven.plugins.resources.CopyResourcesMojo</implementation>
 +      <language>java</language>
-+      <instantiationStrategy>per-lookup</instantiationStrategy>
-+      <executionStrategy>once-per-session</executionStrategy>
 +      <since>2.3</since>
-+      <threadSafe>true</threadSafe>
 +      <parameters>
 +        <parameter>
 +          <name>addDefaultExcludes</name>
@@ -32,22 +31,44 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to excludes a default set of files such as .gitignore. By default files like .gitignore, .cvsignore etc. are excluded which means they will not being copied. If you need them for a particular reason you can do that by settings this to false. This means all files like the following will be copied. 
++* Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._* 
++* CVS: **/CVS, **/CVS/**, **/.cvsignore 
++* RCS: **/RCS, **/RCS/** 
++* SCCS: **/SCCS, **/SCCS/** 
++* VSSercer: **/vssver.scc 
++* MKS: **/project.pj 
++* SVN: **/.svn, **/.svn/** 
++* GNU: **/.arch-ids, **/.arch-ids/** 
++* Bazaar: **/.bzr, **/.bzr/** 
++* SurroundSCM: **/.MySCMServerInfo 
++* Mac: **/.DS_Store 
++* Serena Dimension: **/.metadata, **/.metadata/** 
++* Mercurial: **/.hg, **/.hg/** 
++* Git: **/.git, **/.git/** 
++* Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/** 
++* Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail </description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>delimiters</name>
-+          <type>java.util.LinkedHashSet</type>
++          <type>java.util.LinkedHashSet&lt;java.lang.String&gt;</type>
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Set of delimiters for expressions to filter within the resources. These delimiters are specified in the form beginToken*endToken. If no * is given, the delimiter is assumed to be the same for start and end. 
++So, the default filtering delimiters might be specified as:
++&lt;delimiters&gt; &lt;delimiter&gt;${*}&lt;/delimiter&gt; &lt;delimiter&gt;@&lt;/delimiter&gt; &lt;/delimiters&gt; 
++Since the @ delimiter is the same on both ends, we don&apos;t need to specify @*@ (though we can).
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>encoding</name>
 +          <type>java.lang.String</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered resources.</description>
++          <defaultValue>${project.build.sourceEncoding}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>escapeString</name>
@@ -55,7 +76,7 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Expressions preceded with this string won&apos;t be interpolated. Anything else preceded with this string will be passed through unchanged. For example \${foo} will be replaced with ${foo} but \\${foo} will be replaced with \\value of foo, if this parameter has been set to the backslash.</description>
 +        </parameter>
 +        <parameter>
 +          <name>escapeWindowsPaths</name>
@@ -63,7 +84,8 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to escape backslashes and colons in windows-style paths.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>fileNameFiltering</name>
@@ -71,14 +93,17 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Support filtering of filenames folders etc.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>filters</name>
-+          <type>java.util.List</type>
++          <type>java.util.List&lt;java.lang.String&gt;</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of extra filter properties files to be used along with System properties, project properties, and filter properties files specified in the POM build/filters section, which should be used for the filtering during the current mojo execution. 
++Normally, these will be configured from a plugin&apos;s execution section, to provide a different set of filters for a particular execution. For instance, starting in Maven 2.2.0, you have the option of configuring executions with the id&apos;s default-resources and default-testResources to supply different configurations for the two different types of resources. By supplying extraFilters configurations, you can separate which filters are used for which type of resource.
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>includeEmptyDirs</name>
@@ -86,30 +111,31 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Copy any empty directories included in the Resources.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>mavenFilteringHints</name>
-+          <type>java.util.List</type>
++          <type>java.util.List&lt;java.lang.String&gt;</type>
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>List of plexus components hint which implements org.apache.maven.shared.filtering.MavenResourcesFiltering.filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution) &lt;https://maven.apache.org/shared/maven-filtering/apidocs/org/apache/maven/shared/filtering/MavenResourcesFiltering.html#filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution)&gt;. They will be executed after the resources copying/filtering.</description>
 +        </parameter>
 +        <parameter>
 +          <name>nonFilteredFileExtensions</name>
-+          <type>java.util.List</type>
++          <type>java.util.List&lt;java.lang.String&gt;</type>
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Additional file extensions to not apply filtering. Already defined are: jpg, jpeg, gif, bmp, png.</description>
 +        </parameter>
 +        <parameter>
 +          <name>outputDirectory</name>
-+          <type>java.io.File</type>
++          <type>java.nio.file.Path</type>
 +          <required>true</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The output directory into which to copy the resources.</description>
 +        </parameter>
 +        <parameter>
 +          <name>overwrite</name>
@@ -117,7 +143,8 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Overwrite existing files even if the destination files are newer.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>propertiesEncoding</name>
@@ -125,14 +152,14 @@
 +          <since>3.2.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered properties files. If not specified, it will default to the value of the &quot;encoding&quot; parameter.</description>
 +        </parameter>
 +        <parameter>
 +          <name>resources</name>
-+          <type>java.util.List</type>
++          <type>java.util.List&lt;org.apache.maven.shared.filtering.Resource&gt;</type>
 +          <required>true</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of resources we want to transfer. See the Maven Model for a description of how to code the resources element.</description>
 +        </parameter>
 +        <parameter>
 +          <name>skip</name>
@@ -140,7 +167,9 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>You can skip the execution of the plugin if you need to. Its use is NOT RECOMMENDED, but quite convenient on occasion.</description>
++          <expression>${maven.resources.skip}</expression>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>supportMultiLineFiltering</name>
@@ -148,7 +177,8 @@
 +          <since>2.5</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Stop searching endToken at the end of line.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useBuildFilters</name>
@@ -156,7 +186,9 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>If false, don&apos;t use the filters specified in the build/filters section of the POM when processing resources in this mojo execution.
++See also: buildFilters, filters</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useDefaultDelimiters</name>
@@ -164,93 +196,71 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Use default delimiters in addition to custom delimiters, if any.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +      </parameters>
-+      <configuration>
-+        <addDefaultExcludes implementation="boolean" default-value="true"/>
-+        <encoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}"/>
-+        <escapeWindowsPaths implementation="boolean" default-value="true"/>
-+        <fileNameFiltering implementation="boolean" default-value="false"/>
-+        <includeEmptyDirs implementation="boolean" default-value="false"/>
-+        <overwrite implementation="boolean" default-value="false"/>
-+        <skip implementation="boolean" default-value="false">${maven.resources.skip}</skip>
-+        <supportMultiLineFiltering implementation="boolean" default-value="false"/>
-+        <useBuildFilters implementation="boolean" default-value="true"/>
-+        <useDefaultDelimiters implementation="boolean" default-value="true"/>
-+      </configuration>
 +    </mojo>
 +    <mojo>
 +      <goal>help</goal>
 +      <description>Display help information on maven-resources-plugin.
 +Call mvn resources:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
-+      <requiresDirectInvocation>false</requiresDirectInvocation>
-+      <requiresProject>false</requiresProject>
-+      <requiresReports>false</requiresReports>
++      <directInvocationOnly>false</directInvocationOnly>
++      <projectRequired>false</projectRequired>
 +      <aggregator>false</aggregator>
-+      <requiresOnline>false</requiresOnline>
++      <onlineRequired>false</onlineRequired>
 +      <inheritedByDefault>true</inheritedByDefault>
-+      <implementation>org.apache.maven.plugins.resources.HelpMojo</implementation>
++      <implementation>org.apache.maven.plugins.maven_resources_plugin.HelpMojo</implementation>
 +      <language>java</language>
-+      <instantiationStrategy>per-lookup</instantiationStrategy>
-+      <executionStrategy>once-per-session</executionStrategy>
-+      <threadSafe>true</threadSafe>
 +      <parameters>
 +        <parameter>
 +          <name>detail</name>
 +          <type>boolean</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Display help information on maven-resources-plugin.
-+Call mvn resources:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
++          <description>If true, display all settable properties for each goal.</description>
++          <expression>${detail}</expression>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>goal</name>
 +          <type>java.lang.String</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Display help information on maven-resources-plugin.
-+Call mvn resources:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
++          <description>The name of the goal for which to show help. If unspecified, all goals will be displayed.</description>
++          <expression>${goal}</expression>
 +        </parameter>
 +        <parameter>
 +          <name>indentSize</name>
 +          <type>int</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Display help information on maven-resources-plugin.
-+Call mvn resources:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
++          <description>The number of spaces per indentation level, should be positive.</description>
++          <expression>${indentSize}</expression>
++          <defaultValue>2</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>lineLength</name>
 +          <type>int</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Display help information on maven-resources-plugin.
-+Call mvn resources:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
++          <description>The maximum length of a display line, should be positive.</description>
++          <expression>${lineLength}</expression>
++          <defaultValue>80</defaultValue>
 +        </parameter>
 +      </parameters>
-+      <configuration>
-+        <detail implementation="boolean" default-value="false">${detail}</detail>
-+        <goal implementation="java.lang.String">${goal}</goal>
-+        <indentSize implementation="int" default-value="2">${indentSize}</indentSize>
-+        <lineLength implementation="int" default-value="80">${lineLength}</lineLength>
-+      </configuration>
 +    </mojo>
 +    <mojo>
 +      <goal>resources</goal>
 +      <description>Copy resources for the main source code to the main output directory. Always uses the project.build.resources element to specify the resources to copy.</description>
-+      <requiresDirectInvocation>false</requiresDirectInvocation>
-+      <requiresProject>true</requiresProject>
-+      <requiresReports>false</requiresReports>
++      <directInvocationOnly>false</directInvocationOnly>
++      <projectRequired>true</projectRequired>
 +      <aggregator>false</aggregator>
-+      <requiresOnline>false</requiresOnline>
++      <onlineRequired>false</onlineRequired>
 +      <inheritedByDefault>true</inheritedByDefault>
 +      <phase>process-resources</phase>
 +      <implementation>org.apache.maven.plugins.resources.ResourcesMojo</implementation>
 +      <language>java</language>
-+      <instantiationStrategy>per-lookup</instantiationStrategy>
-+      <executionStrategy>once-per-session</executionStrategy>
-+      <threadSafe>true</threadSafe>
 +      <parameters>
 +        <parameter>
 +          <name>addDefaultExcludes</name>
@@ -258,22 +268,44 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to excludes a default set of files such as .gitignore. By default files like .gitignore, .cvsignore etc. are excluded which means they will not being copied. If you need them for a particular reason you can do that by settings this to false. This means all files like the following will be copied. 
++* Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._* 
++* CVS: **/CVS, **/CVS/**, **/.cvsignore 
++* RCS: **/RCS, **/RCS/** 
++* SCCS: **/SCCS, **/SCCS/** 
++* VSSercer: **/vssver.scc 
++* MKS: **/project.pj 
++* SVN: **/.svn, **/.svn/** 
++* GNU: **/.arch-ids, **/.arch-ids/** 
++* Bazaar: **/.bzr, **/.bzr/** 
++* SurroundSCM: **/.MySCMServerInfo 
++* Mac: **/.DS_Store 
++* Serena Dimension: **/.metadata, **/.metadata/** 
++* Mercurial: **/.hg, **/.hg/** 
++* Git: **/.git, **/.git/** 
++* Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/** 
++* Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail </description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>delimiters</name>
-+          <type>java.util.LinkedHashSet</type>
++          <type>java.util.LinkedHashSet&lt;java.lang.String&gt;</type>
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Set of delimiters for expressions to filter within the resources. These delimiters are specified in the form beginToken*endToken. If no * is given, the delimiter is assumed to be the same for start and end. 
++So, the default filtering delimiters might be specified as:
++&lt;delimiters&gt; &lt;delimiter&gt;${*}&lt;/delimiter&gt; &lt;delimiter&gt;@&lt;/delimiter&gt; &lt;/delimiters&gt; 
++Since the @ delimiter is the same on both ends, we don&apos;t need to specify @*@ (though we can).
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>encoding</name>
 +          <type>java.lang.String</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered resources.</description>
++          <defaultValue>${project.build.sourceEncoding}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>escapeString</name>
@@ -281,7 +313,7 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Expressions preceded with this string won&apos;t be interpolated. Anything else preceded with this string will be passed through unchanged. For example \${foo} will be replaced with ${foo} but \\${foo} will be replaced with \\value of foo, if this parameter has been set to the backslash.</description>
 +        </parameter>
 +        <parameter>
 +          <name>escapeWindowsPaths</name>
@@ -289,7 +321,8 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to escape backslashes and colons in windows-style paths.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>fileNameFiltering</name>
@@ -297,14 +330,17 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Support filtering of filenames folders etc.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>filters</name>
-+          <type>java.util.List</type>
++          <type>java.util.List&lt;java.lang.String&gt;</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of extra filter properties files to be used along with System properties, project properties, and filter properties files specified in the POM build/filters section, which should be used for the filtering during the current mojo execution. 
++Normally, these will be configured from a plugin&apos;s execution section, to provide a different set of filters for a particular execution. For instance, starting in Maven 2.2.0, you have the option of configuring executions with the id&apos;s default-resources and default-testResources to supply different configurations for the two different types of resources. By supplying extraFilters configurations, you can separate which filters are used for which type of resource.
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>includeEmptyDirs</name>
@@ -312,30 +348,32 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Copy any empty directories included in the Resources.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>mavenFilteringHints</name>
-+          <type>java.util.List</type>
++          <type>java.util.List&lt;java.lang.String&gt;</type>
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>List of plexus components hint which implements org.apache.maven.shared.filtering.MavenResourcesFiltering.filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution) &lt;https://maven.apache.org/shared/maven-filtering/apidocs/org/apache/maven/shared/filtering/MavenResourcesFiltering.html#filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution)&gt;. They will be executed after the resources copying/filtering.</description>
 +        </parameter>
 +        <parameter>
 +          <name>nonFilteredFileExtensions</name>
-+          <type>java.util.List</type>
++          <type>java.util.List&lt;java.lang.String&gt;</type>
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Additional file extensions to not apply filtering. Already defined are: jpg, jpeg, gif, bmp, png.</description>
 +        </parameter>
 +        <parameter>
 +          <name>outputDirectory</name>
-+          <type>java.io.File</type>
++          <type>java.nio.file.Path</type>
 +          <required>true</required>
 +          <editable>true</editable>
-+          <description>Copy resources for the main source code to the main output directory. Always uses the project.build.resources element to specify the resources to copy.</description>
++          <description>The output directory into which to copy the resources.</description>
++          <defaultValue>${project.build.outputDirectory}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>overwrite</name>
@@ -343,7 +381,8 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Overwrite existing files even if the destination files are newer.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>propertiesEncoding</name>
@@ -351,7 +390,14 @@
 +          <since>3.2.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered properties files. If not specified, it will default to the value of the &quot;encoding&quot; parameter.</description>
++        </parameter>
++        <parameter>
++          <name>resources</name>
++          <type>java.util.List&lt;org.apache.maven.shared.filtering.Resource&gt;</type>
++          <required>false</required>
++          <editable>true</editable>
++          <description>The list of resources we want to transfer.</description>
 +        </parameter>
 +        <parameter>
 +          <name>skip</name>
@@ -359,7 +405,9 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>You can skip the execution of the plugin if you need to. Its use is NOT RECOMMENDED, but quite convenient on occasion.</description>
++          <expression>${maven.resources.skip}</expression>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>supportMultiLineFiltering</name>
@@ -367,7 +415,8 @@
 +          <since>2.5</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Stop searching endToken at the end of line.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useBuildFilters</name>
@@ -375,7 +424,9 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>If false, don&apos;t use the filters specified in the build/filters section of the POM when processing resources in this mojo execution.
++See also: buildFilters, filters</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useDefaultDelimiters</name>
@@ -383,38 +434,22 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Use default delimiters in addition to custom delimiters, if any.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +      </parameters>
-+      <configuration>
-+        <addDefaultExcludes implementation="boolean" default-value="true"/>
-+        <encoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}"/>
-+        <escapeWindowsPaths implementation="boolean" default-value="true"/>
-+        <fileNameFiltering implementation="boolean" default-value="false"/>
-+        <includeEmptyDirs implementation="boolean" default-value="false"/>
-+        <outputDirectory implementation="java.io.File" default-value="${project.build.outputDirectory}"/>
-+        <overwrite implementation="boolean" default-value="false"/>
-+        <skip implementation="boolean" default-value="false">${maven.resources.skip}</skip>
-+        <supportMultiLineFiltering implementation="boolean" default-value="false"/>
-+        <useBuildFilters implementation="boolean" default-value="true"/>
-+        <useDefaultDelimiters implementation="boolean" default-value="true"/>
-+      </configuration>
 +    </mojo>
 +    <mojo>
 +      <goal>testResources</goal>
 +      <description>Copy resources for the test source code to the test output directory. Always uses the project.build.testResources element to specify the resources to copy.</description>
-+      <requiresDirectInvocation>false</requiresDirectInvocation>
-+      <requiresProject>true</requiresProject>
-+      <requiresReports>false</requiresReports>
++      <directInvocationOnly>false</directInvocationOnly>
++      <projectRequired>true</projectRequired>
 +      <aggregator>false</aggregator>
-+      <requiresOnline>false</requiresOnline>
++      <onlineRequired>false</onlineRequired>
 +      <inheritedByDefault>true</inheritedByDefault>
 +      <phase>process-test-resources</phase>
 +      <implementation>org.apache.maven.plugins.resources.TestResourcesMojo</implementation>
 +      <language>java</language>
-+      <instantiationStrategy>per-lookup</instantiationStrategy>
-+      <executionStrategy>once-per-session</executionStrategy>
-+      <threadSafe>true</threadSafe>
 +      <parameters>
 +        <parameter>
 +          <name>addDefaultExcludes</name>
@@ -422,22 +457,44 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to excludes a default set of files such as .gitignore. By default files like .gitignore, .cvsignore etc. are excluded which means they will not being copied. If you need them for a particular reason you can do that by settings this to false. This means all files like the following will be copied. 
++* Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._* 
++* CVS: **/CVS, **/CVS/**, **/.cvsignore 
++* RCS: **/RCS, **/RCS/** 
++* SCCS: **/SCCS, **/SCCS/** 
++* VSSercer: **/vssver.scc 
++* MKS: **/project.pj 
++* SVN: **/.svn, **/.svn/** 
++* GNU: **/.arch-ids, **/.arch-ids/** 
++* Bazaar: **/.bzr, **/.bzr/** 
++* SurroundSCM: **/.MySCMServerInfo 
++* Mac: **/.DS_Store 
++* Serena Dimension: **/.metadata, **/.metadata/** 
++* Mercurial: **/.hg, **/.hg/** 
++* Git: **/.git, **/.git/** 
++* Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/** 
++* Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail </description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>delimiters</name>
-+          <type>java.util.LinkedHashSet</type>
++          <type>java.util.LinkedHashSet&lt;java.lang.String&gt;</type>
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Set of delimiters for expressions to filter within the resources. These delimiters are specified in the form beginToken*endToken. If no * is given, the delimiter is assumed to be the same for start and end. 
++So, the default filtering delimiters might be specified as:
++&lt;delimiters&gt; &lt;delimiter&gt;${*}&lt;/delimiter&gt; &lt;delimiter&gt;@&lt;/delimiter&gt; &lt;/delimiters&gt; 
++Since the @ delimiter is the same on both ends, we don&apos;t need to specify @*@ (though we can).
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>encoding</name>
 +          <type>java.lang.String</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered resources.</description>
++          <defaultValue>${project.build.sourceEncoding}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>escapeString</name>
@@ -445,7 +502,7 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Expressions preceded with this string won&apos;t be interpolated. Anything else preceded with this string will be passed through unchanged. For example \${foo} will be replaced with ${foo} but \\${foo} will be replaced with \\value of foo, if this parameter has been set to the backslash.</description>
 +        </parameter>
 +        <parameter>
 +          <name>escapeWindowsPaths</name>
@@ -453,7 +510,8 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to escape backslashes and colons in windows-style paths.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>fileNameFiltering</name>
@@ -461,14 +519,17 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Support filtering of filenames folders etc.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>filters</name>
-+          <type>java.util.List</type>
++          <type>java.util.List&lt;java.lang.String&gt;</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of extra filter properties files to be used along with System properties, project properties, and filter properties files specified in the POM build/filters section, which should be used for the filtering during the current mojo execution. 
++Normally, these will be configured from a plugin&apos;s execution section, to provide a different set of filters for a particular execution. For instance, starting in Maven 2.2.0, you have the option of configuring executions with the id&apos;s default-resources and default-testResources to supply different configurations for the two different types of resources. By supplying extraFilters configurations, you can separate which filters are used for which type of resource.
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>includeEmptyDirs</name>
@@ -476,30 +537,32 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Copy any empty directories included in the Resources.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>mavenFilteringHints</name>
-+          <type>java.util.List</type>
++          <type>java.util.List&lt;java.lang.String&gt;</type>
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>List of plexus components hint which implements org.apache.maven.shared.filtering.MavenResourcesFiltering.filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution) &lt;https://maven.apache.org/shared/maven-filtering/apidocs/org/apache/maven/shared/filtering/MavenResourcesFiltering.html#filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution)&gt;. They will be executed after the resources copying/filtering.</description>
 +        </parameter>
 +        <parameter>
 +          <name>nonFilteredFileExtensions</name>
-+          <type>java.util.List</type>
++          <type>java.util.List&lt;java.lang.String&gt;</type>
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Additional file extensions to not apply filtering. Already defined are: jpg, jpeg, gif, bmp, png.</description>
 +        </parameter>
 +        <parameter>
 +          <name>outputDirectory</name>
-+          <type>java.io.File</type>
++          <type>java.nio.file.Path</type>
 +          <required>true</required>
 +          <editable>true</editable>
-+          <description>Copy resources for the test source code to the test output directory. Always uses the project.build.testResources element to specify the resources to copy.</description>
++          <description>The output directory into which to copy the resources.</description>
++          <defaultValue>${project.build.testOutputDirectory}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>overwrite</name>
@@ -507,7 +570,8 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Overwrite existing files even if the destination files are newer.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>propertiesEncoding</name>
@@ -515,14 +579,14 @@
 +          <since>3.2.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered properties files. If not specified, it will default to the value of the &quot;encoding&quot; parameter.</description>
 +        </parameter>
 +        <parameter>
 +          <name>resources</name>
-+          <type>java.util.List</type>
-+          <required>true</required>
++          <type>java.util.List&lt;org.apache.maven.shared.filtering.Resource&gt;</type>
++          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources for the test source code to the test output directory. Always uses the project.build.testResources element to specify the resources to copy.</description>
++          <description>The list of resources we want to transfer.</description>
 +        </parameter>
 +        <parameter>
 +          <name>skip</name>
@@ -530,7 +594,9 @@
 +          <since>2.6</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources for the test source code to the test output directory. Always uses the project.build.testResources element to specify the resources to copy.</description>
++          <description>Set this to &apos;true&apos; to bypass copying of test resources. Its use is NOT RECOMMENDED, but quite convenient on occasion.</description>
++          <expression>${maven.test.skip}</expression>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>supportMultiLineFiltering</name>
@@ -538,7 +604,8 @@
 +          <since>2.5</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Stop searching endToken at the end of line.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useBuildFilters</name>
@@ -546,7 +613,9 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>If false, don&apos;t use the filters specified in the build/filters section of the POM when processing resources in this mojo execution.
++See also: buildFilters, filters</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useDefaultDelimiters</name>
@@ -554,31 +623,21 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Use default delimiters in addition to custom delimiters, if any.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +      </parameters>
-+      <configuration>
-+        <addDefaultExcludes implementation="boolean" default-value="true"/>
-+        <encoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}"/>
-+        <escapeWindowsPaths implementation="boolean" default-value="true"/>
-+        <fileNameFiltering implementation="boolean" default-value="false"/>
-+        <includeEmptyDirs implementation="boolean" default-value="false"/>
-+        <outputDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
-+        <overwrite implementation="boolean" default-value="false"/>
-+        <resources implementation="java.util.List" default-value="${project.testResources}"/>
-+        <skip implementation="boolean" default-value="false">${maven.test.skip}</skip>
-+        <supportMultiLineFiltering implementation="boolean" default-value="false"/>
-+        <useBuildFilters implementation="boolean" default-value="true"/>
-+        <useDefaultDelimiters implementation="boolean" default-value="true"/>
-+      </configuration>
 +    </mojo>
 +  </mojos>
 +</plugin>
---- maven-resources-plugin-3.3.1/src/main/filtered-resources/META-INF/maven/plugin.xml	1970-01-01 01:00:00.000000000 +0100
-+++ maven-resources-plugin-3.3.1/src/main/filtered-resources/META-INF/maven/plugin.xml	2023-09-14 08:30:05.500192926 +0200
-@@ -0,0 +1,748 @@
+--- a/src/main/filtered-resources/META-INF/maven/plugin.xml	1970-01-01 01:00:00.000000000 +0100
++++ b/src/main/filtered-resources/META-INF/maven/plugin.xml	2025-06-30 18:59:51.564008273 +0200
+@@ -0,0 +1,663 @@
 +<?xml version="1.0" encoding="UTF-8"?>
-+<plugin>
++
++<!-- Generated by maven-plugin-tools 4.0-->
++
++<plugin xmlns="http://maven.apache.org/PLUGIN/2.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:location="http://maven.apache.org/PLUGIN/2.0.0 https://maven.apache.org/xsd/plugin-2.0.0.xsd">
 +  <name>${project.name}</name>
 +  <description>${project.description}</description>
 +  <groupId>${project.groupId}</groupId>
@@ -587,22 +646,20 @@
 +  <goalPrefix>resources</goalPrefix>
 +  <isolatedRealm>false</isolatedRealm>
 +  <inheritedByDefault>true</inheritedByDefault>
++  <requiredJavaVersion>17</requiredJavaVersion>
++  <requiredMavenVersion>4.0.0-rc-4</requiredMavenVersion>
 +  <mojos>
 +    <mojo>
 +      <goal>copy-resources</goal>
 +      <description>Copy resources of the configured plugin attribute resources</description>
-+      <requiresDirectInvocation>false</requiresDirectInvocation>
-+      <requiresProject>true</requiresProject>
-+      <requiresReports>false</requiresReports>
++      <directInvocationOnly>false</directInvocationOnly>
++      <projectRequired>true</projectRequired>
 +      <aggregator>false</aggregator>
-+      <requiresOnline>false</requiresOnline>
++      <onlineRequired>false</onlineRequired>
 +      <inheritedByDefault>true</inheritedByDefault>
 +      <implementation>org.apache.maven.plugins.resources.CopyResourcesMojo</implementation>
 +      <language>java</language>
-+      <instantiationStrategy>per-lookup</instantiationStrategy>
-+      <executionStrategy>once-per-session</executionStrategy>
 +      <since>2.3</since>
-+      <threadSafe>true</threadSafe>
 +      <parameters>
 +        <parameter>
 +          <name>addDefaultExcludes</name>
@@ -610,7 +667,24 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to excludes a default set of files such as .gitignore. By default files like .gitignore, .cvsignore etc. are excluded which means they will not being copied. If you need them for a particular reason you can do that by settings this to false. This means all files like the following will be copied. 
++* Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._* 
++* CVS: **/CVS, **/CVS/**, **/.cvsignore 
++* RCS: **/RCS, **/RCS/** 
++* SCCS: **/SCCS, **/SCCS/** 
++* VSSercer: **/vssver.scc 
++* MKS: **/project.pj 
++* SVN: **/.svn, **/.svn/** 
++* GNU: **/.arch-ids, **/.arch-ids/** 
++* Bazaar: **/.bzr, **/.bzr/** 
++* SurroundSCM: **/.MySCMServerInfo 
++* Mac: **/.DS_Store 
++* Serena Dimension: **/.metadata, **/.metadata/** 
++* Mercurial: **/.hg, **/.hg/** 
++* Git: **/.git, **/.git/** 
++* Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/** 
++* Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail </description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>buildFilters</name>
@@ -618,7 +692,9 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>false</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of additional filter properties files to be used along with System and project properties, which would be used for the filtering.
++See also: filters</description>
++          <defaultValue>${project.build.filters}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>delimiters</name>
@@ -626,14 +702,19 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Set of delimiters for expressions to filter within the resources. These delimiters are specified in the form beginToken*endToken. If no * is given, the delimiter is assumed to be the same for start and end. 
++So, the default filtering delimiters might be specified as:
++&lt;delimiters&gt; &lt;delimiter&gt;${*}&lt;/delimiter&gt; &lt;delimiter&gt;@&lt;/delimiter&gt; &lt;/delimiters&gt; 
++Since the @ delimiter is the same on both ends, we don&apos;t need to specify @*@ (though we can).
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>encoding</name>
 +          <type>java.lang.String</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered resources.</description>
++          <defaultValue>${project.build.sourceEncoding}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>escapeString</name>
@@ -641,7 +722,7 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Expressions preceded with this string won&apos;t be interpolated. Anything else preceded with this string will be passed through unchanged. For example \${foo} will be replaced with ${foo} but \\${foo} will be replaced with \\value of foo, if this parameter has been set to the backslash.</description>
 +        </parameter>
 +        <parameter>
 +          <name>escapeWindowsPaths</name>
@@ -649,7 +730,8 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to escape backslashes and colons in windows-style paths.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>fileNameFiltering</name>
@@ -657,14 +739,17 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Support filtering of filenames folders etc.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>filters</name>
 +          <type>java.util.List</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of extra filter properties files to be used along with System properties, project properties, and filter properties files specified in the POM build/filters section, which should be used for the filtering during the current mojo execution. 
++Normally, these will be configured from a plugin&apos;s execution section, to provide a different set of filters for a particular execution. For instance, starting in Maven 2.2.0, you have the option of configuring executions with the id&apos;s default-resources and default-testResources to supply different configurations for the two different types of resources. By supplying extraFilters configurations, you can separate which filters are used for which type of resource.
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>includeEmptyDirs</name>
@@ -672,7 +757,8 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Copy any empty directories included in the Resources.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>mavenFilteringHints</name>
@@ -680,7 +766,7 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>List of plexus components hint which implements org.apache.maven.shared.filtering.MavenResourcesFiltering.filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution) &lt;https://maven.apache.org/shared/maven-filtering/apidocs/org/apache/maven/shared/filtering/MavenResourcesFiltering.html#filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution)&gt;. They will be executed after the resources copying/filtering.</description>
 +        </parameter>
 +        <parameter>
 +          <name>nonFilteredFileExtensions</name>
@@ -688,14 +774,14 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Additional file extensions to not apply filtering. Already defined are: jpg, jpeg, gif, bmp, png.</description>
 +        </parameter>
 +        <parameter>
 +          <name>outputDirectory</name>
-+          <type>java.io.File</type>
++          <type>java.nio.file.Path</type>
 +          <required>true</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The output directory into which to copy the resources.</description>
 +        </parameter>
 +        <parameter>
 +          <name>overwrite</name>
@@ -703,14 +789,8 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
-+        </parameter>
-+        <parameter>
-+          <name>project</name>
-+          <type>org.apache.maven.project.MavenProject</type>
-+          <required>true</required>
-+          <editable>false</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Overwrite existing files even if the destination files are newer.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>propertiesEncoding</name>
@@ -718,21 +798,14 @@
 +          <since>3.2.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered properties files. If not specified, it will default to the value of the &quot;encoding&quot; parameter.</description>
 +        </parameter>
 +        <parameter>
 +          <name>resources</name>
 +          <type>java.util.List</type>
 +          <required>true</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
-+        </parameter>
-+        <parameter>
-+          <name>session</name>
-+          <type>org.apache.maven.execution.MavenSession</type>
-+          <required>true</required>
-+          <editable>false</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of resources we want to transfer. See the Maven Model for a description of how to code the resources element.</description>
 +        </parameter>
 +        <parameter>
 +          <name>skip</name>
@@ -740,7 +813,9 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>You can skip the execution of the plugin if you need to. Its use is NOT RECOMMENDED, but quite convenient on occasion.</description>
++          <expression>${maven.resources.skip}</expression>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>supportMultiLineFiltering</name>
@@ -748,7 +823,8 @@
 +          <since>2.5</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Stop searching endToken at the end of line.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useBuildFilters</name>
@@ -756,7 +832,9 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>If false, don&apos;t use the filters specified in the build/filters section of the POM when processing resources in this mojo execution.
++See also: buildFilters, filters</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useDefaultDelimiters</name>
@@ -764,108 +842,71 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Use default delimiters in addition to custom delimiters, if any.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +      </parameters>
-+      <configuration>
-+        <addDefaultExcludes implementation="boolean" default-value="true"/>
-+        <buildFilters implementation="java.util.List" default-value="${project.build.filters}"/>
-+        <encoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}"/>
-+        <escapeWindowsPaths implementation="boolean" default-value="true"/>
-+        <fileNameFiltering implementation="boolean" default-value="false"/>
-+        <includeEmptyDirs implementation="boolean" default-value="false"/>
-+        <overwrite implementation="boolean" default-value="false"/>
-+        <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
-+        <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
-+        <skip implementation="boolean" default-value="false">${maven.resources.skip}</skip>
-+        <supportMultiLineFiltering implementation="boolean" default-value="false"/>
-+        <useBuildFilters implementation="boolean" default-value="true"/>
-+        <useDefaultDelimiters implementation="boolean" default-value="true"/>
-+      </configuration>
-+      <requirements>
-+        <requirement>
-+          <role>org.apache.maven.shared.filtering.MavenResourcesFiltering</role>
-+          <role-hint>default</role-hint>
-+          <field-name>mavenResourcesFiltering</field-name>
-+        </requirement>
-+        <requirement>
-+          <role>org.apache.maven.shared.filtering.MavenResourcesFiltering</role>
-+          <field-name>mavenResourcesFilteringMap</field-name>
-+        </requirement>
-+      </requirements>
 +    </mojo>
 +    <mojo>
 +      <goal>help</goal>
-+      <description>Display help information on maven-resources-plugin.&lt;br&gt;
-+Call &lt;code&gt;mvn resources:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
-+      <requiresDirectInvocation>false</requiresDirectInvocation>
-+      <requiresProject>false</requiresProject>
-+      <requiresReports>false</requiresReports>
++      <description>Display help information on maven-resources-plugin.
++Call mvn resources:help -Ddetail=true -Dgoal=&lt;goal-name&gt; to display parameter details.</description>
++      <directInvocationOnly>false</directInvocationOnly>
++      <projectRequired>false</projectRequired>
 +      <aggregator>false</aggregator>
-+      <requiresOnline>false</requiresOnline>
++      <onlineRequired>false</onlineRequired>
 +      <inheritedByDefault>true</inheritedByDefault>
-+      <implementation>org.apache.maven.plugins.resources.HelpMojo</implementation>
++      <implementation>org.apache.maven.plugins.maven_resources_plugin.HelpMojo</implementation>
 +      <language>java</language>
-+      <instantiationStrategy>per-lookup</instantiationStrategy>
-+      <executionStrategy>once-per-session</executionStrategy>
-+      <threadSafe>true</threadSafe>
 +      <parameters>
 +        <parameter>
 +          <name>detail</name>
 +          <type>boolean</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Display help information on maven-resources-plugin.&lt;br&gt;
-+Call &lt;code&gt;mvn resources:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
++          <description>If true, display all settable properties for each goal.</description>
++          <expression>${detail}</expression>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>goal</name>
 +          <type>java.lang.String</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Display help information on maven-resources-plugin.&lt;br&gt;
-+Call &lt;code&gt;mvn resources:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
++          <description>The name of the goal for which to show help. If unspecified, all goals will be displayed.</description>
++          <expression>${goal}</expression>
 +        </parameter>
 +        <parameter>
 +          <name>indentSize</name>
 +          <type>int</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Display help information on maven-resources-plugin.&lt;br&gt;
-+Call &lt;code&gt;mvn resources:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
++          <description>The number of spaces per indentation level, should be positive.</description>
++          <expression>${indentSize}</expression>
++          <defaultValue>2</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>lineLength</name>
 +          <type>int</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Display help information on maven-resources-plugin.&lt;br&gt;
-+Call &lt;code&gt;mvn resources:help -Ddetail=true -Dgoal=&amp;lt;goal-name&amp;gt;&lt;/code&gt; to display parameter details.</description>
++          <description>The maximum length of a display line, should be positive.</description>
++          <expression>${lineLength}</expression>
++          <defaultValue>80</defaultValue>
 +        </parameter>
 +      </parameters>
-+      <configuration>
-+        <detail implementation="boolean" default-value="false">${detail}</detail>
-+        <goal implementation="java.lang.String">${goal}</goal>
-+        <indentSize implementation="int" default-value="2">${indentSize}</indentSize>
-+        <lineLength implementation="int" default-value="80">${lineLength}</lineLength>
-+      </configuration>
 +    </mojo>
 +    <mojo>
 +      <goal>resources</goal>
-+      <description>Copy resources for the main source code to the main output directory. Always uses the project.build.resources element
-+to specify the resources to copy.</description>
-+      <requiresDirectInvocation>false</requiresDirectInvocation>
-+      <requiresProject>true</requiresProject>
-+      <requiresReports>false</requiresReports>
++      <description>Copy resources for the main source code to the main output directory. Always uses the project.build.resources element to specify the resources to copy.</description>
++      <directInvocationOnly>false</directInvocationOnly>
++      <projectRequired>true</projectRequired>
 +      <aggregator>false</aggregator>
-+      <requiresOnline>false</requiresOnline>
++      <onlineRequired>false</onlineRequired>
 +      <inheritedByDefault>true</inheritedByDefault>
 +      <phase>process-resources</phase>
 +      <implementation>org.apache.maven.plugins.resources.ResourcesMojo</implementation>
 +      <language>java</language>
-+      <instantiationStrategy>per-lookup</instantiationStrategy>
-+      <executionStrategy>once-per-session</executionStrategy>
-+      <threadSafe>true</threadSafe>
 +      <parameters>
 +        <parameter>
 +          <name>addDefaultExcludes</name>
@@ -873,7 +914,24 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to excludes a default set of files such as .gitignore. By default files like .gitignore, .cvsignore etc. are excluded which means they will not being copied. If you need them for a particular reason you can do that by settings this to false. This means all files like the following will be copied. 
++* Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._* 
++* CVS: **/CVS, **/CVS/**, **/.cvsignore 
++* RCS: **/RCS, **/RCS/** 
++* SCCS: **/SCCS, **/SCCS/** 
++* VSSercer: **/vssver.scc 
++* MKS: **/project.pj 
++* SVN: **/.svn, **/.svn/** 
++* GNU: **/.arch-ids, **/.arch-ids/** 
++* Bazaar: **/.bzr, **/.bzr/** 
++* SurroundSCM: **/.MySCMServerInfo 
++* Mac: **/.DS_Store 
++* Serena Dimension: **/.metadata, **/.metadata/** 
++* Mercurial: **/.hg, **/.hg/** 
++* Git: **/.git, **/.git/** 
++* Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/** 
++* Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail </description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>buildFilters</name>
@@ -881,7 +939,9 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>false</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of additional filter properties files to be used along with System and project properties, which would be used for the filtering.
++See also: filters</description>
++          <defaultValue>${project.build.filters}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>delimiters</name>
@@ -889,14 +949,19 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Set of delimiters for expressions to filter within the resources. These delimiters are specified in the form beginToken*endToken. If no * is given, the delimiter is assumed to be the same for start and end. 
++So, the default filtering delimiters might be specified as:
++&lt;delimiters&gt; &lt;delimiter&gt;${*}&lt;/delimiter&gt; &lt;delimiter&gt;@&lt;/delimiter&gt; &lt;/delimiters&gt; 
++Since the @ delimiter is the same on both ends, we don&apos;t need to specify @*@ (though we can).
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>encoding</name>
 +          <type>java.lang.String</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered resources.</description>
++          <defaultValue>${project.build.sourceEncoding}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>escapeString</name>
@@ -904,7 +969,7 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Expressions preceded with this string won&apos;t be interpolated. Anything else preceded with this string will be passed through unchanged. For example \${foo} will be replaced with ${foo} but \\${foo} will be replaced with \\value of foo, if this parameter has been set to the backslash.</description>
 +        </parameter>
 +        <parameter>
 +          <name>escapeWindowsPaths</name>
@@ -912,7 +977,8 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to escape backslashes and colons in windows-style paths.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>fileNameFiltering</name>
@@ -920,14 +986,17 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Support filtering of filenames folders etc.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>filters</name>
 +          <type>java.util.List</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of extra filter properties files to be used along with System properties, project properties, and filter properties files specified in the POM build/filters section, which should be used for the filtering during the current mojo execution. 
++Normally, these will be configured from a plugin&apos;s execution section, to provide a different set of filters for a particular execution. For instance, starting in Maven 2.2.0, you have the option of configuring executions with the id&apos;s default-resources and default-testResources to supply different configurations for the two different types of resources. By supplying extraFilters configurations, you can separate which filters are used for which type of resource.
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>includeEmptyDirs</name>
@@ -935,7 +1004,8 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Copy any empty directories included in the Resources.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>mavenFilteringHints</name>
@@ -943,7 +1013,7 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>List of plexus components hint which implements org.apache.maven.shared.filtering.MavenResourcesFiltering.filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution) &lt;https://maven.apache.org/shared/maven-filtering/apidocs/org/apache/maven/shared/filtering/MavenResourcesFiltering.html#filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution)&gt;. They will be executed after the resources copying/filtering.</description>
 +        </parameter>
 +        <parameter>
 +          <name>nonFilteredFileExtensions</name>
@@ -951,15 +1021,15 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Additional file extensions to not apply filtering. Already defined are: jpg, jpeg, gif, bmp, png.</description>
 +        </parameter>
 +        <parameter>
 +          <name>outputDirectory</name>
-+          <type>java.io.File</type>
++          <type>java.nio.file.Path</type>
 +          <required>true</required>
 +          <editable>true</editable>
-+          <description>Copy resources for the main source code to the main output directory. Always uses the project.build.resources element
-+to specify the resources to copy.</description>
++          <description>The output directory into which to copy the resources.</description>
++          <defaultValue>${project.build.outputDirectory}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>overwrite</name>
@@ -967,14 +1037,8 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
-+        </parameter>
-+        <parameter>
-+          <name>project</name>
-+          <type>org.apache.maven.project.MavenProject</type>
-+          <required>true</required>
-+          <editable>false</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Overwrite existing files even if the destination files are newer.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>propertiesEncoding</name>
@@ -982,22 +1046,14 @@
 +          <since>3.2.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered properties files. If not specified, it will default to the value of the &quot;encoding&quot; parameter.</description>
 +        </parameter>
 +        <parameter>
 +          <name>resources</name>
 +          <type>java.util.List</type>
-+          <required>true</required>
-+          <editable>false</editable>
-+          <description>Copy resources for the main source code to the main output directory. Always uses the project.build.resources element
-+to specify the resources to copy.</description>
-+        </parameter>
-+        <parameter>
-+          <name>session</name>
-+          <type>org.apache.maven.execution.MavenSession</type>
-+          <required>true</required>
-+          <editable>false</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <required>false</required>
++          <editable>true</editable>
++          <description>The list of resources we want to transfer.</description>
 +        </parameter>
 +        <parameter>
 +          <name>skip</name>
@@ -1005,7 +1061,9 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>You can skip the execution of the plugin if you need to. Its use is NOT RECOMMENDED, but quite convenient on occasion.</description>
++          <expression>${maven.resources.skip}</expression>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>supportMultiLineFiltering</name>
@@ -1013,7 +1071,8 @@
 +          <since>2.5</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Stop searching endToken at the end of line.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useBuildFilters</name>
@@ -1021,7 +1080,9 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>If false, don&apos;t use the filters specified in the build/filters section of the POM when processing resources in this mojo execution.
++See also: buildFilters, filters</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useDefaultDelimiters</name>
@@ -1029,54 +1090,22 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Use default delimiters in addition to custom delimiters, if any.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +      </parameters>
-+      <configuration>
-+        <addDefaultExcludes implementation="boolean" default-value="true"/>
-+        <buildFilters implementation="java.util.List" default-value="${project.build.filters}"/>
-+        <encoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}"/>
-+        <escapeWindowsPaths implementation="boolean" default-value="true"/>
-+        <fileNameFiltering implementation="boolean" default-value="false"/>
-+        <includeEmptyDirs implementation="boolean" default-value="false"/>
-+        <outputDirectory implementation="java.io.File" default-value="${project.build.outputDirectory}"/>
-+        <overwrite implementation="boolean" default-value="false"/>
-+        <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
-+        <resources implementation="java.util.List" default-value="${project.resources}"/>
-+        <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
-+        <skip implementation="boolean" default-value="false">${maven.resources.skip}</skip>
-+        <supportMultiLineFiltering implementation="boolean" default-value="false"/>
-+        <useBuildFilters implementation="boolean" default-value="true"/>
-+        <useDefaultDelimiters implementation="boolean" default-value="true"/>
-+      </configuration>
-+      <requirements>
-+        <requirement>
-+          <role>org.apache.maven.shared.filtering.MavenResourcesFiltering</role>
-+          <role-hint>default</role-hint>
-+          <field-name>mavenResourcesFiltering</field-name>
-+        </requirement>
-+        <requirement>
-+          <role>org.apache.maven.shared.filtering.MavenResourcesFiltering</role>
-+          <field-name>mavenResourcesFilteringMap</field-name>
-+        </requirement>
-+      </requirements>
 +    </mojo>
 +    <mojo>
 +      <goal>testResources</goal>
-+      <description>Copy resources for the test source code to the test output directory.
-+Always uses the project.build.testResources element to specify the resources to copy.</description>
-+      <requiresDirectInvocation>false</requiresDirectInvocation>
-+      <requiresProject>true</requiresProject>
-+      <requiresReports>false</requiresReports>
++      <description>Copy resources for the test source code to the test output directory. Always uses the project.build.testResources element to specify the resources to copy.</description>
++      <directInvocationOnly>false</directInvocationOnly>
++      <projectRequired>true</projectRequired>
 +      <aggregator>false</aggregator>
-+      <requiresOnline>false</requiresOnline>
++      <onlineRequired>false</onlineRequired>
 +      <inheritedByDefault>true</inheritedByDefault>
 +      <phase>process-test-resources</phase>
 +      <implementation>org.apache.maven.plugins.resources.TestResourcesMojo</implementation>
 +      <language>java</language>
-+      <instantiationStrategy>per-lookup</instantiationStrategy>
-+      <executionStrategy>once-per-session</executionStrategy>
-+      <threadSafe>true</threadSafe>
 +      <parameters>
 +        <parameter>
 +          <name>addDefaultExcludes</name>
@@ -1084,7 +1113,24 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to excludes a default set of files such as .gitignore. By default files like .gitignore, .cvsignore etc. are excluded which means they will not being copied. If you need them for a particular reason you can do that by settings this to false. This means all files like the following will be copied. 
++* Misc: **/*~, **/#*#, **/.#*, **/%*%, **/._* 
++* CVS: **/CVS, **/CVS/**, **/.cvsignore 
++* RCS: **/RCS, **/RCS/** 
++* SCCS: **/SCCS, **/SCCS/** 
++* VSSercer: **/vssver.scc 
++* MKS: **/project.pj 
++* SVN: **/.svn, **/.svn/** 
++* GNU: **/.arch-ids, **/.arch-ids/** 
++* Bazaar: **/.bzr, **/.bzr/** 
++* SurroundSCM: **/.MySCMServerInfo 
++* Mac: **/.DS_Store 
++* Serena Dimension: **/.metadata, **/.metadata/** 
++* Mercurial: **/.hg, **/.hg/** 
++* Git: **/.git, **/.git/** 
++* Bitkeeper: **/BitKeeper, **/BitKeeper/**, **/ChangeSet, **/ChangeSet/** 
++* Darcs: **/_darcs, **/_darcs/**, **/.darcsrepo, **/.darcsrepo/****/-darcs-backup*, **/.darcs-temp-mail </description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>buildFilters</name>
@@ -1092,7 +1138,9 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>false</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of additional filter properties files to be used along with System and project properties, which would be used for the filtering.
++See also: filters</description>
++          <defaultValue>${project.build.filters}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>delimiters</name>
@@ -1100,14 +1148,19 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Set of delimiters for expressions to filter within the resources. These delimiters are specified in the form beginToken*endToken. If no * is given, the delimiter is assumed to be the same for start and end. 
++So, the default filtering delimiters might be specified as:
++&lt;delimiters&gt; &lt;delimiter&gt;${*}&lt;/delimiter&gt; &lt;delimiter&gt;@&lt;/delimiter&gt; &lt;/delimiters&gt; 
++Since the @ delimiter is the same on both ends, we don&apos;t need to specify @*@ (though we can).
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>encoding</name>
 +          <type>java.lang.String</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered resources.</description>
++          <defaultValue>${project.build.sourceEncoding}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>escapeString</name>
@@ -1115,7 +1168,7 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Expressions preceded with this string won&apos;t be interpolated. Anything else preceded with this string will be passed through unchanged. For example \${foo} will be replaced with ${foo} but \\${foo} will be replaced with \\value of foo, if this parameter has been set to the backslash.</description>
 +        </parameter>
 +        <parameter>
 +          <name>escapeWindowsPaths</name>
@@ -1123,7 +1176,8 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Whether to escape backslashes and colons in windows-style paths.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>fileNameFiltering</name>
@@ -1131,14 +1185,17 @@
 +          <since>3.0.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Support filtering of filenames folders etc.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>filters</name>
 +          <type>java.util.List</type>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of extra filter properties files to be used along with System properties, project properties, and filter properties files specified in the POM build/filters section, which should be used for the filtering during the current mojo execution. 
++Normally, these will be configured from a plugin&apos;s execution section, to provide a different set of filters for a particular execution. For instance, starting in Maven 2.2.0, you have the option of configuring executions with the id&apos;s default-resources and default-testResources to supply different configurations for the two different types of resources. By supplying extraFilters configurations, you can separate which filters are used for which type of resource.
++</description>
 +        </parameter>
 +        <parameter>
 +          <name>includeEmptyDirs</name>
@@ -1146,7 +1203,8 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Copy any empty directories included in the Resources.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>mavenFilteringHints</name>
@@ -1154,7 +1212,7 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>List of plexus components hint which implements org.apache.maven.shared.filtering.MavenResourcesFiltering.filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution) &lt;https://maven.apache.org/shared/maven-filtering/apidocs/org/apache/maven/shared/filtering/MavenResourcesFiltering.html#filterResources(org.apache.maven.shared.filtering.MavenResourcesExecution)&gt;. They will be executed after the resources copying/filtering.</description>
 +        </parameter>
 +        <parameter>
 +          <name>nonFilteredFileExtensions</name>
@@ -1162,15 +1220,15 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Additional file extensions to not apply filtering. Already defined are: jpg, jpeg, gif, bmp, png.</description>
 +        </parameter>
 +        <parameter>
 +          <name>outputDirectory</name>
-+          <type>java.io.File</type>
++          <type>java.nio.file.Path</type>
 +          <required>true</required>
 +          <editable>true</editable>
-+          <description>Copy resources for the test source code to the test output directory.
-+Always uses the project.build.testResources element to specify the resources to copy.</description>
++          <description>The output directory into which to copy the resources.</description>
++          <defaultValue>${project.build.testOutputDirectory}</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>overwrite</name>
@@ -1178,14 +1236,8 @@
 +          <since>2.3</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
-+        </parameter>
-+        <parameter>
-+          <name>project</name>
-+          <type>org.apache.maven.project.MavenProject</type>
-+          <required>true</required>
-+          <editable>false</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Overwrite existing files even if the destination files are newer.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>propertiesEncoding</name>
@@ -1193,22 +1245,14 @@
 +          <since>3.2.0</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The character encoding to use when reading and writing filtered properties files. If not specified, it will default to the value of the &quot;encoding&quot; parameter.</description>
 +        </parameter>
 +        <parameter>
 +          <name>resources</name>
 +          <type>java.util.List</type>
-+          <required>true</required>
++          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources for the test source code to the test output directory.
-+Always uses the project.build.testResources element to specify the resources to copy.</description>
-+        </parameter>
-+        <parameter>
-+          <name>session</name>
-+          <type>org.apache.maven.execution.MavenSession</type>
-+          <required>true</required>
-+          <editable>false</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>The list of resources we want to transfer.</description>
 +        </parameter>
 +        <parameter>
 +          <name>skip</name>
@@ -1216,8 +1260,9 @@
 +          <since>2.6</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources for the test source code to the test output directory.
-+Always uses the project.build.testResources element to specify the resources to copy.</description>
++          <description>Set this to &apos;true&apos; to bypass copying of test resources. Its use is NOT RECOMMENDED, but quite convenient on occasion.</description>
++          <expression>${maven.test.skip}</expression>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>supportMultiLineFiltering</name>
@@ -1225,7 +1270,8 @@
 +          <since>2.5</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Stop searching endToken at the end of line.</description>
++          <defaultValue>false</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useBuildFilters</name>
@@ -1233,7 +1279,9 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>If false, don&apos;t use the filters specified in the build/filters section of the POM when processing resources in this mojo execution.
++See also: buildFilters, filters</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +        <parameter>
 +          <name>useDefaultDelimiters</name>
@@ -1241,87 +1289,523 @@
 +          <since>2.4</since>
 +          <required>false</required>
 +          <editable>true</editable>
-+          <description>Copy resources of the configured plugin attribute resources</description>
++          <description>Use default delimiters in addition to custom delimiters, if any.</description>
++          <defaultValue>true</defaultValue>
 +        </parameter>
 +      </parameters>
-+      <configuration>
-+        <addDefaultExcludes implementation="boolean" default-value="true"/>
-+        <buildFilters implementation="java.util.List" default-value="${project.build.filters}"/>
-+        <encoding implementation="java.lang.String" default-value="${project.build.sourceEncoding}"/>
-+        <escapeWindowsPaths implementation="boolean" default-value="true"/>
-+        <fileNameFiltering implementation="boolean" default-value="false"/>
-+        <includeEmptyDirs implementation="boolean" default-value="false"/>
-+        <outputDirectory implementation="java.io.File" default-value="${project.build.testOutputDirectory}"/>
-+        <overwrite implementation="boolean" default-value="false"/>
-+        <project implementation="org.apache.maven.project.MavenProject" default-value="${project}"/>
-+        <resources implementation="java.util.List" default-value="${project.testResources}"/>
-+        <session implementation="org.apache.maven.execution.MavenSession" default-value="${session}"/>
-+        <skip implementation="boolean" default-value="false">${maven.test.skip}</skip>
-+        <supportMultiLineFiltering implementation="boolean" default-value="false"/>
-+        <useBuildFilters implementation="boolean" default-value="true"/>
-+        <useDefaultDelimiters implementation="boolean" default-value="true"/>
-+      </configuration>
-+      <requirements>
-+        <requirement>
-+          <role>org.apache.maven.shared.filtering.MavenResourcesFiltering</role>
-+          <role-hint>default</role-hint>
-+          <field-name>mavenResourcesFiltering</field-name>
-+        </requirement>
-+        <requirement>
-+          <role>org.apache.maven.shared.filtering.MavenResourcesFiltering</role>
-+          <field-name>mavenResourcesFilteringMap</field-name>
-+        </requirement>
-+      </requirements>
 +    </mojo>
 +  </mojos>
-+  <dependencies>
-+    <dependency>
-+      <groupId>org.slf4j</groupId>
-+      <artifactId>slf4j-api</artifactId>
-+      <type>jar</type>
-+      <version>1.7.36</version>
-+    </dependency>
-+    <dependency>
-+      <groupId>javax.inject</groupId>
-+      <artifactId>javax.inject</artifactId>
-+      <type>jar</type>
-+      <version>1</version>
-+    </dependency>
-+    <dependency>
-+      <groupId>org.codehaus.plexus</groupId>
-+      <artifactId>plexus-interpolation</artifactId>
-+      <type>jar</type>
-+      <version>1.26</version>
-+    </dependency>
-+    <dependency>
-+      <groupId>org.codehaus.plexus</groupId>
-+      <artifactId>plexus-utils</artifactId>
-+      <type>jar</type>
-+      <version>3.5.1</version>
-+    </dependency>
-+    <dependency>
-+      <groupId>org.apache.maven.shared</groupId>
-+      <artifactId>maven-filtering</artifactId>
-+      <type>jar</type>
-+      <version>3.3.1</version>
-+    </dependency>
-+    <dependency>
-+      <groupId>org.sonatype.plexus</groupId>
-+      <artifactId>plexus-build-api</artifactId>
-+      <type>jar</type>
-+      <version>0.0.7</version>
-+    </dependency>
-+    <dependency>
-+      <groupId>commons-io</groupId>
-+      <artifactId>commons-io</artifactId>
-+      <type>jar</type>
-+      <version>2.11.0</version>
-+    </dependency>
-+    <dependency>
-+      <groupId>org.apache.commons</groupId>
-+      <artifactId>commons-lang3</artifactId>
-+      <type>jar</type>
-+      <version>3.12.0</version>
-+    </dependency>
-+  </dependencies>
 +</plugin>
+--- a/src/main/java/org/apache/maven/plugins/maven_resources_plugin/HelpMojoFactory.java	1970-01-01 01:00:00.000000000 +0100
++++ b/src/main/java/org/apache/maven/plugins/maven_resources_plugin/HelpMojoFactory.java	2025-07-01 00:54:04.223205266 +0200
+@@ -0,0 +1,10 @@
++package org.apache.maven.plugins.maven_resources_plugin;
++
++import org.apache.maven.api.annotations.Generated;
++import org.apache.maven.api.di.Named;
++
++// $FF: synthetic class
++@Named("org.apache.maven.plugins:maven-resources-plugin:4.0.0-beta-2-SNAPSHOT:help")
++@Generated
++public class HelpMojoFactory extends HelpMojo {
++}
+--- a/src/main/java/org/apache/maven/plugins/maven_resources_plugin/HelpMojo.java	1970-01-01 01:00:00.000000000 +0100
++++ b/src/main/java/org/apache/maven/plugins/maven_resources_plugin/HelpMojo.java	2025-06-30 18:59:51.564450012 +0200
+@@ -0,0 +1,458 @@
++package org.apache.maven.plugins.maven_resources_plugin;
++
++import org.apache.maven.api.di.Inject;
++import org.apache.maven.api.plugin.MojoException;
++import org.apache.maven.api.plugin.annotations.Mojo;
++import org.apache.maven.api.plugin.annotations.Parameter;
++import org.apache.maven.api.plugin.Log;
++
++import org.w3c.dom.Document;
++import org.w3c.dom.Element;
++import org.w3c.dom.Node;
++import org.w3c.dom.NodeList;
++import org.xml.sax.SAXException;
++
++import javax.xml.parsers.DocumentBuilder;
++import javax.xml.parsers.DocumentBuilderFactory;
++import javax.xml.parsers.ParserConfigurationException;
++import java.io.IOException;
++import java.io.InputStream;
++import java.util.ArrayList;
++import java.util.List;
++
++/**
++ * Display help information on maven-resources-plugin.<br>
++ * Call <code>mvn resources:help -Ddetail=true -Dgoal=&lt;goal-name&gt;</code> to display parameter details.
++ * @author maven-plugin-tools
++ */
++@Mojo( name = "help", projectRequired = false )
++public class HelpMojo
++    implements org.apache.maven.api.plugin.Mojo
++{
++    @Inject
++    private Log logger;
++
++    /**
++     * If <code>true</code>, display all settable properties for each goal.
++     */
++    @Parameter( property = "detail", defaultValue = "false" )
++    private boolean detail;
++
++    /**
++     * The name of the goal for which to show help. If unspecified, all goals will be displayed.
++     */
++    @Parameter( property = "goal" )
++    private java.lang.String goal;
++
++    /**
++     * The maximum length of a display line, should be positive.
++     */
++    @Parameter( property = "lineLength", defaultValue = "80" )
++    private int lineLength;
++
++    /**
++     * The number of spaces per indentation level, should be positive.
++     */
++    @Parameter( property = "indentSize", defaultValue = "2" )
++    private int indentSize;
++
++    // /META-INF/maven/<groupId>/<artifactId>/plugin-help.xml
++    private static final String PLUGIN_HELP_PATH =
++                    "/META-INF/maven/org.apache.maven.plugins/maven-resources-plugin/plugin-help.xml";
++
++    private static final int DEFAULT_LINE_LENGTH = 80;
++
++    private Document build()
++        throws MojoException
++    {
++        logger.debug( "load plugin-help.xml: " + PLUGIN_HELP_PATH );
++        try ( InputStream is = getClass().getResourceAsStream( PLUGIN_HELP_PATH ) )
++        {
++            if ( is == null )
++            {
++                throw new MojoException( "Could not find plugin descriptor at " + PLUGIN_HELP_PATH );
++            }
++            DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
++            DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
++            return dBuilder.parse( is );
++        }
++        catch ( IOException e )
++        {
++            throw new MojoException( e.getMessage(), e );
++        }
++        catch ( ParserConfigurationException e )
++        {
++            throw new MojoException( e.getMessage(), e );
++        }
++        catch ( SAXException e )
++        {
++            throw new MojoException( e.getMessage(), e );
++        }
++    }
++
++    /**
++     * {@inheritDoc}
++     */
++    @Override
++    public void execute()
++        throws MojoException
++    {
++        if ( lineLength <= 0 )
++        {
++            logger.warn( "The parameter 'lineLength' should be positive, using '80' as default." );
++            lineLength = DEFAULT_LINE_LENGTH;
++        }
++        if ( indentSize <= 0 )
++        {
++            logger.warn( "The parameter 'indentSize' should be positive, using '2' as default." );
++            indentSize = 2;
++        }
++
++        Document doc = build();
++
++        StringBuilder sb = new StringBuilder();
++        Node plugin = getSingleChild( doc, "plugin" );
++
++
++        String name = getValue( plugin, "name" );
++        String version = getValue( plugin, "version" );
++        String id = getValue( plugin, "groupId" ) + ":" + getValue( plugin, "artifactId" ) + ":" + version;
++        if ( isNotEmpty( name ) && !name.contains( id ) )
++        {
++            append( sb, name + " " + version, 0 );
++        }
++        else
++        {
++            if ( isNotEmpty( name ) )
++            {
++                append( sb, name, 0 );
++            }
++            else
++            {
++                append( sb, id, 0 );
++            }
++        }
++        append( sb, getValue( plugin, "description" ), 1 );
++        append( sb, "", 0 );
++
++        //<goalPrefix>plugin</goalPrefix>
++        String goalPrefix = getValue( plugin, "goalPrefix" );
++
++        Node mojos1 = getSingleChild( plugin, "mojos" );
++
++        List<Node> mojos = findNamedChild( mojos1, "mojo" );
++
++        if ( goal == null || goal.length() <= 0 )
++        {
++            append( sb, "This plugin has " + mojos.size() + ( mojos.size() > 1 ? " goals:" : " goal:" ), 0 );
++            append( sb, "", 0 );
++        }
++
++        for ( Node mojo : mojos )
++        {
++            writeGoal( sb, goalPrefix, (Element) mojo );
++        }
++
++        if ( logger.isInfoEnabled() )
++        {
++            logger.info( sb.toString() );
++        }
++    }
++
++
++    private static boolean isNotEmpty( String string )
++    {
++        return string != null && string.length() > 0;
++    }
++
++    private static String getValue( Node node, String elementName )
++        throws MojoException
++    {
++        return getSingleChild( node, elementName ).getTextContent();
++    }
++
++    private static String getValueOr( Node node, String elementName, String def )
++        throws MojoException
++    {
++        List<Node> namedChild = findNamedChild( node, elementName );
++        if ( namedChild.isEmpty() )
++        {
++            return def;
++        }
++        if ( namedChild.size() > 1 )
++        {
++            throw new MojoException( "Multiple " + elementName + " in plugin-help.xml" );
++        }
++        return namedChild.get( 0 ).getTextContent();
++    }
++
++    private static Node getSingleChild( Node node, String elementName )
++        throws MojoException
++    {
++        List<Node> namedChild = findNamedChild( node, elementName );
++        if ( namedChild.isEmpty() )
++        {
++            throw new MojoException( "Could not find " + elementName + " in plugin-help.xml" );
++        }
++        if ( namedChild.size() > 1 )
++        {
++            throw new MojoException( "Multiple " + elementName + " in plugin-help.xml" );
++        }
++        return namedChild.get( 0 );
++    }
++
++    private static List<Node> findNamedChild( Node node, String elementName )
++    {
++        List<Node> result = new ArrayList<Node>();
++        NodeList childNodes = node.getChildNodes();
++        for ( int i = 0; i < childNodes.getLength(); i++ )
++        {
++            Node item = childNodes.item( i );
++            if ( elementName.equals( item.getNodeName() ) )
++            {
++                result.add( item );
++            }
++        }
++        return result;
++    }
++
++    private static Node findSingleChild( Node node, String elementName )
++        throws MojoException
++    {
++        List<Node> elementsByTagName = findNamedChild( node, elementName );
++        if ( elementsByTagName.isEmpty() )
++        {
++            return null;
++        }
++        if ( elementsByTagName.size() > 1 )
++        {
++            throw new MojoException( "Multiple " + elementName + "in plugin-help.xml" );
++        }
++        return elementsByTagName.get( 0 );
++    }
++
++    private void writeGoal( StringBuilder sb, String goalPrefix, Element mojo )
++        throws MojoException
++    {
++        String mojoGoal = getValue( mojo, "goal" );
++        Node description = findSingleChild( mojo, "description" );
++        if ( goal == null || goal.length() <= 0 || mojoGoal.equals( goal ) )
++        {
++            append( sb, goalPrefix + ":" + mojoGoal, 0 );
++            Node deprecated = findSingleChild( mojo, "deprecated" );
++            if ( ( deprecated != null ) && isNotEmpty( deprecated.getTextContent() ) )
++            {
++                append( sb, "Deprecated. " + deprecated.getTextContent(), 1 );
++                if ( detail && description != null )
++                {
++                    append( sb, "", 0 );
++                    append( sb, description.getTextContent(), 1 );
++                }
++            }
++            else if ( description != null )
++            {
++                append( sb, description.getTextContent(), 1 );
++            }
++            append( sb, "", 0 );
++
++            if ( detail )
++            {
++                Node parametersNode = getSingleChild( mojo, "parameters" );
++                List<Node> parameters = findNamedChild( parametersNode, "parameter" );
++                append( sb, "Available parameters:", 1 );
++                append( sb, "", 0 );
++
++                for ( Node parameter : parameters )
++                {
++                    writeParameter( sb, parameter );
++                }
++            }
++        }
++    }
++
++    private void writeParameter( StringBuilder sb, Node parameter )
++        throws MojoException
++    {
++        String parameterName = getValue( parameter, "name" );
++        String parameterDescription = getValue( parameter, "description" );
++
++        String parameterDefaultValue = getValueOr( parameter, "defaultValue", "" );
++        if ( isNotEmpty( parameterDefaultValue ) )
++        {
++            parameterDefaultValue = " (Default: " + parameterDefaultValue + ")";
++        }
++        append( sb, parameterName + parameterDefaultValue, 2 );
++        Node deprecated = findSingleChild( parameter, "deprecated" );
++        if ( ( deprecated != null ) && isNotEmpty( deprecated.getTextContent() ) )
++        {
++            append( sb, "Deprecated. " + deprecated.getTextContent(), 3 );
++            append( sb, "", 0 );
++        }
++        if ( isNotEmpty( parameterDescription ) ) {
++            append( sb, parameterDescription, 3 );
++        }
++        if ( "true".equals( getValue( parameter, "required" ) ) )
++        {
++            append( sb, "Required: Yes", 3 );
++        }
++
++        String parameterExpression = getValueOr( parameter, "expression", "" );
++        if ( isNotEmpty( parameterExpression ) )
++        {
++            String property = getPropertyFromExpression( parameterExpression );
++            append( sb, "User property: " + property, 3 );
++        }
++
++        append( sb, "", 0 );
++    }
++
++    /**
++     * <p>Repeat a String <code>n</code> times to form a new string.</p>
++     *
++     * @param str    String to repeat
++     * @param repeat number of times to repeat str
++     * @return String with repeated String
++     * @throws NegativeArraySizeException if <code>repeat &lt; 0</code>
++     * @throws NullPointerException       if str is <code>null</code>
++     */
++    private static String repeat( String str, int repeat )
++    {
++        StringBuilder buffer = new StringBuilder( repeat * str.length() );
++
++        for ( int i = 0; i < repeat; i++ )
++        {
++            buffer.append( str );
++        }
++
++        return buffer.toString();
++    }
++
++    /**
++     * Append a description to the buffer by respecting the indentSize and lineLength parameters.
++     * <b>Note</b>: The last character is always a new line.
++     *
++     * @param sb          The buffer to append the description, not <code>null</code>.
++     * @param description The description, not <code>null</code>.
++     * @param indent      The base indentation level of each line, must not be negative.
++     */
++    private void append( StringBuilder sb, String description, int indent )
++    {
++        for ( String line : toLines( description, indent, indentSize, lineLength ) )
++        {
++            sb.append( line ).append( '\n' );
++        }
++    }
++
++    /**
++     * Splits the specified text into lines of convenient display length.
++     *
++     * @param text       The text to split into lines, must not be <code>null</code>.
++     * @param indent     The base indentation level of each line, must not be negative.
++     * @param indentSize The size of each indentation, must not be negative.
++     * @param lineLength The length of the line, must not be negative.
++     * @return The sequence of display lines, never <code>null</code>.
++     * @throws NegativeArraySizeException if <code>indent &lt; 0</code>
++     */
++    private static List<String> toLines( String text, int indent, int indentSize, int lineLength )
++    {
++        List<String> lines = new ArrayList<String>();
++
++        String ind = repeat( "\t", indent );
++
++        String[] plainLines = text.split( "(\r\n)|(\r)|(\n)" );
++
++        for ( String plainLine : plainLines )
++        {
++            toLines( lines, ind + plainLine, indentSize, lineLength );
++        }
++
++        return lines;
++    }
++
++    /**
++     * Adds the specified line to the output sequence, performing line wrapping if necessary.
++     *
++     * @param lines      The sequence of display lines, must not be <code>null</code>.
++     * @param line       The line to add, must not be <code>null</code>.
++     * @param indentSize The size of each indentation, must not be negative.
++     * @param lineLength The length of the line, must not be negative.
++     */
++    private static void toLines( List<String> lines, String line, int indentSize, int lineLength )
++    {
++        int lineIndent = getIndentLevel( line );
++        StringBuilder buf = new StringBuilder( 256 );
++
++        String[] tokens = line.split( " +" );
++
++        for ( String token : tokens )
++        {
++            if ( buf.length() > 0 )
++            {
++                if ( buf.length() + token.length() >= lineLength )
++                {
++                    lines.add( buf.toString() );
++                    buf.setLength( 0 );
++                    buf.append( repeat( " ", lineIndent * indentSize ) );
++                }
++                else
++                {
++                    buf.append( ' ' );
++                }
++            }
++
++            for ( int j = 0; j < token.length(); j++ )
++            {
++                char c = token.charAt( j );
++                if ( c == '\t' )
++                {
++                    buf.append( repeat( " ", indentSize - buf.length() % indentSize ) );
++                }
++                else if ( c == '\u00A0' )
++                {
++                    buf.append( ' ' );
++                }
++                else
++                {
++                    buf.append( c );
++                }
++            }
++        }
++        lines.add( buf.toString() );
++    }
++
++    /**
++     * Gets the indentation level of the specified line.
++     *
++     * @param line The line whose indentation level should be retrieved, must not be <code>null</code>.
++     * @return The indentation level of the line.
++     */
++    private static int getIndentLevel( String line )
++    {
++        int level = 0;
++        for ( int i = 0; i < line.length() && line.charAt( i ) == '\t'; i++ )
++        {
++            level++;
++        }
++        for ( int i = level + 1; i <= level + 4 && i < line.length(); i++ )
++        {
++            if ( line.charAt( i ) == '\t' )
++            {
++                level++;
++                break;
++            }
++        }
++        return level;
++    }
++
++    private static String getPropertyFromExpression( String expression )
++    {
++        if ( expression != null && expression.startsWith( "${" ) && expression.endsWith( "}" )
++            && !expression.substring( 2 ).contains( "${" ) )
++        {
++            // expression="${xxx}" -> property="xxx"
++            return expression.substring( 2, expression.length() - 1 );
++        }
++        // no property can be extracted
++        return null;
++    }
++}
+--- a/src/main/java/org/apache/maven/plugins/resources/CopyResourcesMojoFactory.java	1970-01-01 01:00:00.000000000 +0100
++++ b/src/main/java/org/apache/maven/plugins/resources/CopyResourcesMojoFactory.java	2025-07-01 00:57:17.112943468 +0200
+@@ -0,0 +1,10 @@
++package org.apache.maven.plugins.resources;
++
++import org.apache.maven.api.annotations.Generated;
++import org.apache.maven.api.di.Named;
++
++// $FF: synthetic class
++@Named("org.apache.maven.plugins:maven-resources-plugin:4.0.0-beta-2-SNAPSHOT:copy-resources")
++@Generated
++public class CopyResourcesMojoFactory extends CopyResourcesMojo {
++}
+--- a/src/main/java/org/apache/maven/plugins/resources/ResourcesMojoFactory.java	1970-01-01 01:00:00.000000000 +0100
++++ b/src/main/java/org/apache/maven/plugins/resources/ResourcesMojoFactory.java	2025-07-01 00:58:31.369447941 +0200
+@@ -0,0 +1,10 @@
++package org.apache.maven.plugins.resources;
++
++import org.apache.maven.api.annotations.Generated;
++import org.apache.maven.api.di.Named;
++
++// $FF: synthetic class
++@Named("org.apache.maven.plugins:maven-resources-plugin:4.0.0-beta-2-SNAPSHOT:resources")
++@Generated
++public class ResourcesMojoFactory extends ResourcesMojo {
++}
+--- a/src/main/java/org/apache/maven/plugins/resources/TestResourcesMojoFactory.java	1970-01-01 01:00:00.000000000 +0100
++++ b/src/main/java/org/apache/maven/plugins/resources/TestResourcesMojoFactory.java	2025-07-01 01:00:02.618741130 +0200
+@@ -0,0 +1,10 @@
++package org.apache.maven.plugins.resources;
++
++import org.apache.maven.api.annotations.Generated;
++import org.apache.maven.api.di.Named;
++
++// $FF: synthetic class
++@Named("org.apache.maven.plugins:maven-resources-plugin:4.0.0-beta-2-SNAPSHOT:testResources")
++@Generated
++public class TestResourcesMojoFactory extends TestResourcesMojo {
++}
--- maven-resources-plugin-build.xml.orig
+++ maven-resources-plugin-build.xml
@@ -19,19 +19,21 @@
     unit tests."/>
   <property name="project.groupId" value="org.apache.maven.plugins"/>
   <property name="project.artifactId" value="maven-resources-plugin"/>
-  <property name="project.version" value="3.3.1"/>
+  <property name="project.version" value="4.0.0-beta-2-SNAPSHOT"/>
   <property name="project.organization.name" value="The Apache Software Foundation"/>
 
-  <property name="spec.version" value="3.3"/>
+  <property name="spec.version" value="4.0"/>
 
-  <property name="compiler.source" value="1.8"/>
+  <property name="compiler.release" value="8"/>
+  <property name="compiler.source" value="1.${compiler.release}"/>
   <property name="compiler.target" value="${compiler.source}"/>
 
   <property name="build.finalName" value="${project.artifactId}-${project.version}"/>
   <property name="build.dir" value="target"/>
   <property name="build.outputDir" value="${build.dir}/classes"/>
   <property name="build.srcDir" value="src/main/java"/>
-  <property name="build.resourceDir" value="src/main/filtered-resources"/>
+  <property name="build.filteredResourceDir" value="src/main/filtered-resources"/>
+  <property name="build.resourceDir" value="src/main/resources"/>
   <property name="build.testOutputDir" value="${build.dir}/test-classes"/>
   <property name="build.testDir" value="src/test/java"/>
   <property name="build.testResourceDir" value="src/test/resources"/>
@@ -73,6 +75,7 @@
            encoding="UTF-8"
            optimize="false"
            deprecation="true"
+           release="${compiler.release}"
            target="${compiler.target}"
            verbose="false"
            fork="false"
@@ -80,10 +83,13 @@
       <src>
         <pathelement location="${build.srcDir}"/>
       </src>
-      <classpath refid="build.classpath"/>
+      <classpath>
+        <path refid="build.classpath"/>
+        <pathelement location="${build.outputDir}"/>
+      </classpath>
     </javac>
     <copy todir="${build.outputDir}">
-      <fileset dir="${build.resourceDir}"/>
+      <fileset dir="${build.filteredResourceDir}"/>
       <filterchain>
         <expandproperties>
           <propertyset>
--- maven-resources-plugin.spec.orig
+++ maven-resources-plugin.spec
@@ -23,22 +23,25 @@
 %bcond_with bootstrap
 %endif
 %global base_name maven-resources-plugin
-Version:        3.3.1
+%global file_version 4.0.0-beta-2-SNAPSHOT
+Version:        4.0.0~20250720.gitdce5f4c
 Release:        0
 Summary:        Maven Resources Plugin
 License:        Apache-2.0
 Group:          Development/Libraries/Java
 URL:            https://maven.apache.org/plugins/maven-resources-plugin
-Source0:        https://repo1.maven.org/maven2/org/apache/maven/plugins/%{base_name}/%{version}/%{base_name}-%{version}-source-release.zip
+Source0:        %{base_name}-%{version}.tar.xz
 Source1:        %{base_name}-build.xml
 Patch0:         %{base_name}-bootstrap-resources.patch
+Patch1:         0001-Java-8-compatibility.patch
 BuildRequires:  apache-commons-lang3
 BuildRequires:  fdupes
 BuildRequires:  java-devel >= 1.8
 BuildRequires:  javapackages-local
-BuildRequires:  maven-filtering >= 1.3
+BuildRequires:  maven-filtering >= 3.99
+BuildRequires:  maven-lib
 BuildRequires:  maven-plugin-annotations
-BuildRequires:  maven3-lib
+BuildRequires:  plexus-build-api0
 BuildRequires:  plexus-interpolation
 BuildRequires:  plexus-utils
 BuildRequires:  sisu-plexus
@@ -87,27 +90,28 @@ API documentation for %{name}.
 cp %{SOURCE1} build.xml
 %patch -P 0 -p1
 %endif
+%patch -P 1 -p1
 
 # Remove all dependencies with scope test, since a raw xmvn does not hide them
 %pom_remove_dep -r :::test:
 
-%pom_xpath_set pom:project/pom:properties/pom:mavenVersion 3
-%pom_change_dep org.apache.maven::\${mavenVersion}:provided :::compile
+mkdir -p .mvn
 
 %build
 %if %{with bootstrap}
 mkdir -p lib
 build-jar-repository -s lib \
-    commons-lang3 \
     maven-filtering/maven-filtering \
-    maven/maven-core-3 \
-    maven/maven-model-3 \
-    maven/maven-plugin-api-3 \
+    maven/maven-api-annotations \
+    maven/maven-api-core \
+    maven/maven-api-di \
+    maven/maven-api-model \
+    maven/maven-api-settings \
+    maven/maven-xml \
     maven-plugin-tools/maven-plugin-annotations \
     org.eclipse.sisu.plexus \
-    plexus/interpolation \
-    plexus/utils
-%{ant} -Dtest.skip=true jar
+    plexus/plexus-build-api0
+ant -Dtest.skip=true jar
 %else
 xmvn --batch-mode --offline \
     -Dmaven.test.skip=true \
@@ -117,7 +121,7 @@ xmvn --batch-mode --offline \
     package org.apache.maven.plugins:maven-javadoc-plugin:aggregate
 %endif
 
-%{mvn_artifact} pom.xml target/%{base_name}-%{version}.jar
+%{mvn_artifact} pom.xml target/%{base_name}-%{file_version}.jar
 
 %install
 %mvn_install
openSUSE Build Service is sponsored by