-
Notifications
You must be signed in to change notification settings - Fork 96
Open
Labels
bugSomething isn't workingSomething isn't working
Description
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"
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working