ursaj opened a new issue, #759:
URL: https://github.com/apache/maven-shade-plugin/issues/759

   ### Affected version
   
   3.6.0
   
   ### Bug description
   
   Plugin generates corrupted sources, when the following options are set:
   ```
   <createSourcesJar>true</createSourcesJar>
   <shadeSourcesContent>true</shadeSourcesContent>
   ```
   
   Plugin
   
   - ignores math operations
   - ignores bitwise operations
   - ignores boolean operations
   - ignores (return|throw|new|case) Java keywords
   
   Patch
   ```
   Index: 
src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java
   IDEA additional info:
   Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
   <+>UTF-8
   ===================================================================
   diff --git 
a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java 
b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java
   --- 
a/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java  
 (revision d18d100fade4b1031e5afff1380e6f243e1cd9c0)
   +++ 
b/src/main/java/org/apache/maven/plugins/shade/relocation/SimpleRelocator.java  
 (date 1759154163759)
   @@ -34,7 +34,7 @@
        /**
         * Match dot, slash or space at end of string
         */
   -    private static final Pattern RX_ENDS_WITH_DOT_SLASH_SPACE = 
Pattern.compile("[./ ]$");
   +    private static final Pattern RX_ENDS_WITH_DOT_SLASH_SPACE = 
Pattern.compile("(\\.|/|[^<?:+\\-*/^|&]\\s+)$");
   
        /**
         * Match <ul>
   @@ -46,7 +46,7 @@
         * at end of string
         */
        private static final Pattern RX_ENDS_WITH_JAVA_KEYWORD = 
Pattern.compile(
   -            
"\\b(import|package|public|protected|private|static|final|synchronized|abstract|volatile|extends|implements|throws)
 $"
   +            
"\\b(import|package|public|protected|private|static|final|synchronized|abstract|volatile|extends|implements|instanceof|throws|throw|return|new|case)\\s$"
                        + "|"
                        + "\\{@link( \\*)* $"
                        + "|"
   Index: 
src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java
   IDEA additional info:
   Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
   <+>UTF-8
   ===================================================================
   diff --git 
a/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java
 
b/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java
   --- 
a/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java
       (revision d18d100fade4b1031e5afff1380e6f243e1cd9c0)
   +++ 
b/src/test/java/org/apache/maven/plugins/shade/relocation/SimpleRelocatorTest.java
       (date 1759154055323)
   @@ -208,6 +208,30 @@
                + "  /** Javadoc, followed by default visibility method with 
fully qualified return type */\n"
                + "  org.apache.maven.MyReturnType doSomething( 
org.apache.maven.Bar bar, org.objectweb.asm.sub.Something something) {\n"
                + "    org.apache.maven.Bar bar;\n"
   +            + "    Map<org.apache.maven.Key, org.apache.maven.Value> 
map1;\n"
   +            + "    Map< org.apache.maven.Key, org.apache.maven.Value > 
map2;\n"
   +            + "    throw org.apache.maven.Error.newError();\n"
   +            + "    throw new org.apache.maven.Error();\n"
   +            + "    boolean flag1 = bar instanceof org.apache.maven.Bar;\n"
   +            + "    boolean flag2 = org.apache.maven.Utils.yes() ? 
org.apache.maven.Utils.one() : org.apache.maven.Utils.zero();\n"
   +            + "    boolean flag3 = org.apache.maven.Utils.yes() || 
org.apache.maven.Utils.no();\n"
   +            + "    boolean flag4 = org.apache.maven.Utils.yes() && 
org.apache.maven.Utils.no();\n"
   +            + "    boolean flag5 = org.apache.maven.Utils.yes() ^^ 
org.apache.maven.Utils.no();\n"
   +            + "    int value1 = org.apache.maven.Utils.x() + 
org.apache.maven.Utils.y()\n"
   +            + "    int value2 = org.apache.maven.Utils.x() - 
org.apache.maven.Utils.y()\n"
   +            + "    int value3 = org.apache.maven.Utils.x() * 
org.apache.maven.Utils.y()\n"
   +            + "    int value4 = org.apache.maven.Utils.x() / 
org.apache.maven.Utils.y()\n"
   +            + "    int value5 = org.apache.maven.Utils.one() | 
org.apache.maven.Utils.two()\n"
   +            + "    int value6 = org.apache.maven.Utils.one() & 
org.apache.maven.Utils.two()\n"
   +            + "    int value7 = org.apache.maven.Utils.one() ^ 
org.apache.maven.Utils.two()\n"
   +            + "    switch (org.apache.maven.Utils.getValue()) {\n"
   +            + "        case org.apache.maven.Utils.STATIC_VALUE:\n"
   +            + "            org.apache.maven.Utils.info(\"known value\"):\n"
   +            + "            break;\n"
   +            + "        default:\n"
   +            + "            org.apache.maven.Utils.warn(\"unknown 
value\"):\n"
   +            + "            break;\n"
   +            + "    }\n"
                + "    org.objectweb.asm.sub.Something something;\n"
                + "    String io, val;\n"
                + "    String noRelocation = 
\"NoWordBoundaryXXXorg.apache.maven.In\";\n"
   @@ -241,6 +265,30 @@
                + "  /** Javadoc, followed by default visibility method with 
fully qualified return type */\n"
                + "  com.acme.maven.MyReturnType doSomething( 
com.acme.maven.Bar bar, aj.org.objectweb.asm.sub.Something something) {\n"
                + "    com.acme.maven.Bar bar;\n"
   +            + "    Map<com.acme.maven.Key, com.acme.maven.Value> map1;\n"
   +            + "    Map< com.acme.maven.Key, com.acme.maven.Value > map2;\n"
   +            + "    throw com.acme.maven.Error.newError();\n"
   +            + "    throw new com.acme.maven.Error();\n"
   +            + "    boolean flag1 = bar instanceof com.acme.maven.Bar;\n"
   +            + "    boolean flag2 = com.acme.maven.Utils.yes() ? 
com.acme.maven.Utils.one() : com.acme.maven.Utils.zero();\n"
   +            + "    boolean flag3 = com.acme.maven.Utils.yes() || 
com.acme.maven.Utils.no();\n"
   +            + "    boolean flag4 = com.acme.maven.Utils.yes() && 
com.acme.maven.Utils.no();\n"
   +            + "    boolean flag5 = com.acme.maven.Utils.yes() ^^ 
com.acme.maven.Utils.no();\n"
   +            + "    int value1 = com.acme.maven.Utils.x() + 
com.acme.maven.Utils.y()\n"
   +            + "    int value2 = com.acme.maven.Utils.x() - 
com.acme.maven.Utils.y()\n"
   +            + "    int value3 = com.acme.maven.Utils.x() * 
com.acme.maven.Utils.y()\n"
   +            + "    int value4 = com.acme.maven.Utils.x() / 
com.acme.maven.Utils.y()\n"
   +            + "    int value5 = com.acme.maven.Utils.one() | 
com.acme.maven.Utils.two()\n"
   +            + "    int value6 = com.acme.maven.Utils.one() & 
com.acme.maven.Utils.two()\n"
   +            + "    int value7 = com.acme.maven.Utils.one() ^ 
com.acme.maven.Utils.two()\n"
   +            + "    switch (com.acme.maven.Utils.getValue()) {\n"
   +            + "        case com.acme.maven.Utils.STATIC_VALUE:\n"
   +            + "            com.acme.maven.Utils.info(\"known value\"):\n"
   +            + "            break;\n"
   +            + "        default:\n"
   +            + "            com.acme.maven.Utils.warn(\"unknown value\"):\n"
   +            + "            break;\n"
   +            + "    }\n"
                + "    aj.org.objectweb.asm.sub.Something something;\n"
                + "    String io, val;\n"
                + "    String noRelocation = 
\"NoWordBoundaryXXXorg.apache.maven.In\";\n"
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]

Reply via email to