Merge branch 'master' of github.com:apache/tomee-patch-plugin
diff --git a/pom.xml b/pom.xml
index 854b3f8..c598a60 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,7 +47,7 @@
     <connection>scm:git:git@github.com:apache/tomee-patch-plugin.git</connection>
     <url>scm:git:git@github.com:apache/tomee-patch-plugin.git</url>
     <developerConnection>scm:git:git@github.com:apache/tomee-patch-plugin.git</developerConnection>
-    <tag>HEAD</tag>
+    <tag>tomee-patch-parent-0.2</tag>
   </scm>
 
   <issueManagement>
diff --git a/tomee-patch-core/src/main/java/org/apache/tomee/patch/core/Transformation.java b/tomee-patch-core/src/main/java/org/apache/tomee/patch/core/Transformation.java
index 12d1480..2625c5a 100644
--- a/tomee-patch-core/src/main/java/org/apache/tomee/patch/core/Transformation.java
+++ b/tomee-patch-core/src/main/java/org/apache/tomee/patch/core/Transformation.java
@@ -28,8 +28,10 @@
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Collection;
+import java.util.Collections;
 import java.util.HashSet;
 import java.util.List;
+import java.util.Map;
 import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.zip.ZipEntry;
@@ -42,15 +44,18 @@
 
     private final List<Clazz> classes = new ArrayList<Clazz>();
     private final Log log;
+    private final Map<String, String> replacements;
 
     public Transformation() {
         this.log = new NullLog();
+        this.replacements = Collections.EMPTY_MAP;
     }
 
 
-    public Transformation(final List<Clazz> classes, final Log log) {
+    public Transformation(final List<Clazz> classes, final Map<String, String> replacements, final Log log) {
         this.classes.addAll(classes);
         this.log = log;
+        this.replacements = replacements;
     }
 
     public static File transform(final File jar) throws IOException {
@@ -85,7 +90,7 @@
                     IO.copy(zipInputStream, skipped);
                     continue;
                 }
-                
+
                 /*
                  * If this entry has been patched, skip it
                  * We will add the patched version at the end
@@ -154,9 +159,9 @@
         }
         return false;
     }
-    
+
     private String updatePath(final String name) {
-        return name.replace("resources/javax.faces","resources/jakarta.faces");
+        return name.replace("resources/javax.faces", "resources/jakarta.faces");
     }
 
     private boolean copyUnmodified(final String path) {
@@ -210,6 +215,16 @@
                 .replace("javax.xml.ws", "jakarta.xml.ws")
                 .replace("javax\\.faces", "jakarta\\.faces") // in some javascript files
                 .get();
+
+        {
+            final String name = new File(path).getName();
+            final String replacement = replacements.get(name);
+            if (replacement != null) {
+                log.debug(String.format("Replaced %s with %s", path, replacement));
+                inputStream = IO.read(new File(replacement));
+            }
+        }
+        
         IO.copy(inputStream, outputStream);
     }
 
diff --git a/tomee-patch-plugin/src/main/java/org/apache/tomee/patch/plugin/PatchMojo.java b/tomee-patch-plugin/src/main/java/org/apache/tomee/patch/plugin/PatchMojo.java
index a74eb2e..c76ab47 100644
--- a/tomee-patch-plugin/src/main/java/org/apache/tomee/patch/plugin/PatchMojo.java
+++ b/tomee-patch-plugin/src/main/java/org/apache/tomee/patch/plugin/PatchMojo.java
@@ -86,6 +86,9 @@
     @Parameter
     private Map<String, String> jdkToolchain;
 
+    @Parameter
+    private Map<String, String> replacements;
+
     /**
      * Sets the executable of the compiler to use when fork is <code>true</code>.
      */
@@ -171,7 +174,7 @@
 
             final List<Clazz> clazzes = classes();
 
-            final Transformation transformation = new Transformation(clazzes, new MavenLog(getLog()));
+            final Transformation transformation = new Transformation(clazzes, replacements, new MavenLog(getLog()));
             for (final Artifact artifact : artifacts) {
                 final File file = artifact.getFile();
                 getLog().debug("Patching " + file.getAbsolutePath());