[ https://issues.apache.org/jira/browse/MSHADE-345?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17684326#comment-17684326 ]
Javier Neira Sanchez edited comment on MSHADE-345 at 2/6/23 6:35 AM: --------------------------------------------------------------------- Hi! i am trying to reproduce the issue but i am not sure on how do it: I have this pom.xml: {noformat} <project> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven.its.shade.rie</groupId> <artifactId>test</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>MSHADE-345</name> <description> Test handling scala package relocation. </description> <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api-scala_2.11</artifactId> <version>12.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api-scala_2.12</artifactId> <version>12.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api-scala_2.13</artifactId> <version>12.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <id>attach-shade-211</id> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <shadedArtifactAttached>false</shadedArtifactAttached> <artifactSet> <includes> <include>org.apache.logging.log4j:log4j-api-scala_2.11</include> <include>org.scala-lang:scala-library</include> </includes> </artifactSet> <relocations> <relocation> <pattern>org.apache.logging.log4j.scala</pattern> <shadedPattern>relocated.scala211</shadedPattern> </relocation> <relocation> <pattern>scala</pattern> <shadedPattern>relocated.scala211</shadedPattern> </relocation> </relocations> </configuration> </execution> </executions> </plugin> </plugins> </build> </project> {noformat} An i have a Main class using the classes being relocated: As you can check in the bytecode org{color:#d4d4d4}.{color}{color:#4ec9b0}apache{color}{color:#d4d4d4}.{color}{color:#4ec9b0}logging{color}{color:#d4d4d4}.{color}{color:#4ec9b0}log4j{color}{color:#d4d4d4}.{color}{color:#4ec9b0}scala{color}{color:#d4d4d4}.{color}{color:#4ec9b0}Logger{color}{color:#d4d4d4}.{color}{color:#dcdcaa}FQCN{color}{color:#d4d4d4}(){color} has been relocated to {color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}relocated/scala211/Logger{color}{color:#569cd6}.{color}{color:#dcdcaa}FQCN{color}{color:#569cd6}:()L{color}{color:#4ec9b0}java/lang/String{color}{color:#569cd6};{color} {color:#569cd6} {color} was (Author: jneira): Hi! i am trying to reproduce the issue but i am not sure on how do it: I have this pom.xml: {noformat} <project> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.maven.its.shade.rie</groupId> <artifactId>test</artifactId> <version>1.0</version> <packaging>jar</packaging> <name>MSHADE-345</name> <description> Test handling scala package relocation. </description> <dependencies> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api-scala_2.11</artifactId> <version>12.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api-scala_2.12</artifactId> <version>12.0</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> <artifactId>log4j-api-scala_2.13</artifactId> <version>12.0</version> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <version>3.2.4</version> <executions> <execution> <id>attach-shade-211</id> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <shadedArtifactAttached>false</shadedArtifactAttached> <artifactSet> <includes> <include>org.apache.logging.log4j:log4j-api-scala_2.11</include> <include>org.scala-lang:scala-library</include> </includes> </artifactSet> <relocations> <relocation> <pattern>org.apache.logging.log4j.scala</pattern> <shadedPattern>relocated.scala211</shadedPattern> </relocation> <relocation> <pattern>scala</pattern> <shadedPattern>relocated.scala211</shadedPattern> </relocation> </relocations> </configuration> </execution> <execution> <id>attach-shade-212</id> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <shadedArtifactAttached>false</shadedArtifactAttached> <artifactSet> <includes> <include>org.apache.logging.log4j:log4j-api-scala_2.12</include> </includes> </artifactSet> <relocations> <relocation> <pattern>org.apache.logging.log4j.scala</pattern> <shadedPattern>relocated.scala212</shadedPattern> </relocation> </relocations> </configuration> </execution> <execution> <id>attach-shade-213</id> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <shadedArtifactAttached>false</shadedArtifactAttached> <artifactSet> <includes> <include>org.apache.logging.log4j:log4j-api-scala_2.13</include> </includes> </artifactSet> <relocations> <relocation> <pattern>org.apache.logging.log4j.scala</pattern> <shadedPattern>relocated.scala213</shadedPattern> </relocation> </relocations> </configuration> </execution> </executions> </plugin> </plugins> </build> </project> {noformat} My Main class is: {color:#569cd6}import{color}{color:#d4d4d4} {color}{color:#4ec9b0}org{color}{color:#d4d4d4}.{color}{color:#4ec9b0}apache{color}{color:#d4d4d4}.{color}{color:#4ec9b0}logging{color}{color:#d4d4d4}.{color}{color:#4ec9b0}log4j{color}{color:#d4d4d4}.{color}{color:#4ec9b0}scala{color}{color:#d4d4d4}.{color}{color:#4ec9b0}Logger{color}{color:#d4d4d4};{color} {color:#569cd6}import{color}{color:#d4d4d4} {color}{color:#4ec9b0}org{color}{color:#d4d4d4}.{color}{color:#4ec9b0}apache{color}{color:#d4d4d4}.{color}{color:#4ec9b0}logging{color}{color:#d4d4d4}.{color}{color:#4ec9b0}log4j{color}{color:#d4d4d4}.{color}{color:#4ec9b0}scala{color}{color:#d4d4d4}.{color}{color:#4ec9b0}Logging{color}{color:#d4d4d4};{color} {color:#569cd6}import{color}{color:#d4d4d4} {color}{color:#4ec9b0}org{color}{color:#d4d4d4}.{color}{color:#4ec9b0}apache{color}{color:#d4d4d4}.{color}{color:#4ec9b0}logging{color}{color:#d4d4d4}.{color}{color:#4ec9b0}log4j{color}{color:#d4d4d4}.{color}{color:#4ec9b0}spi{color}{color:#d4d4d4}.{color}{color:#4ec9b0}ExtendedLogger{color}{color:#d4d4d4};{color} {color:#569cd6}public{color}{color:#d4d4d4} {color}{color:#569cd6}class{color}{color:#d4d4d4} {color}{color:#4ec9b0}Main{color}{color:#d4d4d4} {{color} {color:#d4d4d4} {color}{color:#569cd6}public{color}{color:#d4d4d4} {color}{color:#569cd6}static{color}{color:#d4d4d4} {color}{color:#4ec9b0}void{color}{color:#d4d4d4} {color}{color:#dcdcaa}main{color}{color:#d4d4d4}({color}{color:#4ec9b0}String{color}{color:#d4d4d4}[] {color}{color:#9cdcfe}args{color}{color:#d4d4d4}) {{color} {color:#d4d4d4} {color}{color:#4ec9b0}System{color}{color:#d4d4d4}.{color}{color:#4fc1ff}out{color}{color:#d4d4d4}.{color}{color:#dcdcaa}println{color}{color:#d4d4d4}({color}{color:#ce9178}"Test"{color}{color:#d4d4d4} + {color}{color:#4ec9b0}Logger{color}{color:#d4d4d4}.{color}{color:#dcdcaa}FQCN{color}{color:#d4d4d4}());{color} {color:#d4d4d4} {color}{color:#4ec9b0}Test{color}{color:#d4d4d4} {color}{color:#9cdcfe}t{color}{color:#d4d4d4} = {color}{color:#c586c0}new{color}{color:#d4d4d4} {color}{color:#dcdcaa}Test{color}{color:#d4d4d4}();{color} {color:#d4d4d4} {color}{color:#4ec9b0}System{color}{color:#d4d4d4}.{color}{color:#4fc1ff}out{color}{color:#d4d4d4}.{color}{color:#dcdcaa}println{color}{color:#d4d4d4}({color}{color:#ce9178}"Logger: "{color}{color:#d4d4d4} + {color}{color:#9cdcfe}t{color}{color:#d4d4d4}.{color}{color:#dcdcaa}logger{color}{color:#d4d4d4}());{color} {color:#d4d4d4} }{color} {color:#d4d4d4} {color}{color:#569cd6}public{color}{color:#d4d4d4} {color}{color:#569cd6}static{color}{color:#d4d4d4} {color}{color:#569cd6}class{color}{color:#d4d4d4} {color}{color:#4ec9b0}Test{color}{color:#d4d4d4} {color}{color:#569cd6}implements{color}{color:#d4d4d4} {color}{color:#4ec9b0}Logging{color}{color:#d4d4d4}{{color} {color:#d4d4d4} {color}{color:#569cd6}public{color}{color:#d4d4d4} {color}{color:#4ec9b0}ExtendedLogger{color}{color:#d4d4d4} {color}{color:#dcdcaa}logger{color}{color:#d4d4d4}() {{color} {color:#d4d4d4} {color}{color:#c586c0}return{color}{color:#d4d4d4} {color}{color:#569cd6}null{color}{color:#d4d4d4};{color} {color:#d4d4d4} }{color} {color:#d4d4d4} {color}{color:#569cd6}public{color}{color:#d4d4d4} void {color}{color:#dcdcaa}org$apache$logging$log4j$scala$Logging$_setter_$logger_${color}{color:#dcdcaa}eq{color}{color:#d4d4d4}({color}{color:#4ec9b0}ExtendedLogger{color}{color:#d4d4d4} {color}{color:#9cdcfe}arg0{color}{color:#d4d4d4}) {{color} {color:#d4d4d4} {color}{color:#c586c0}return{color}{color:#d4d4d4};{color} {color:#d4d4d4} }{color} {color:#d4d4d4} }{color} {color:#d4d4d4}}{color} And examining the bytecode in the Main.class inside the shaded jar i can see {color:#6a9955}Compiled from {color}{color:#ce9178}"Main.java"{color} {color:#569cd6}public{color}{color:#d4d4d4} {color}{color:#569cd6}class{color}{color:#d4d4d4} {color}{color:#4ec9b0}Main{color}{color:#d4d4d4} {{color} {color:#d4d4d4} {color}{color:#569cd6}public{color}{color:#d4d4d4} {color}{color:#4ec9b0}Main{color}{color:#d4d4d4}();{color} {color:#569cd6} Code:{color} {color:#d4d4d4} {color}{color:#569cd6}0:{color}{color:#d4d4d4} {color}{color:#dcdcaa}aload_0{color} {color:#d4d4d4} {color}{color:#569cd6}1:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokespecial{color}{color:#d4d4d4} #12 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/Object{color}{color:#569cd6}.{color}{color:#dcdcaa}"<init>"{color}{color:#569cd6}:(){color}{color:#4ec9b0}V{color} {color:#d4d4d4} {color}{color:#569cd6}4:{color}{color:#d4d4d4} {color}{color:#dcdcaa}return{color} {color:#d4d4d4} {color}{color:#569cd6}public{color}{color:#d4d4d4} {color}{color:#569cd6}static{color}{color:#d4d4d4} {color}{color:#4ec9b0}void{color}{color:#d4d4d4} {color}{color:#dcdcaa}main{color}{color:#d4d4d4}({color}{color:#4ec9b0}java.lang.String{color}{color:#d4d4d4}[]);{color} {color:#569cd6} Code:{color} {color:#d4d4d4} {color}{color:#569cd6}0:{color}{color:#d4d4d4} {color}{color:#dcdcaa}getstatic{color}{color:#d4d4d4} #22 {color}{color:#6a9955}// {color}{color:#569cd6}Field{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/System{color}{color:#569cd6}.{color}{color:#9cdcfe}out{color}{color:#569cd6}:L{color}{color:#4ec9b0}java/io/PrintStream{color}{color:#569cd6};{color} {color:#d4d4d4} {color}{color:#569cd6}3:{color}{color:#d4d4d4} {color}{color:#dcdcaa}new{color}{color:#d4d4d4} #24 {color}{color:#6a9955}// {color}{color:#569cd6}class{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/StringBuilder{color} {color:#d4d4d4} {color}{color:#569cd6}6:{color}{color:#d4d4d4} {color}{color:#dcdcaa}dup{color} {color:#d4d4d4} {color}{color:#569cd6}7:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokespecial{color}{color:#d4d4d4} #25 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6}.{color}{color:#dcdcaa}"<init>"{color}{color:#569cd6}:(){color}{color:#4ec9b0}V{color} {color:#d4d4d4} {color}{color:#569cd6}10:{color}{color:#d4d4d4} {color}{color:#dcdcaa}ldc{color}{color:#d4d4d4} #26 {color}{color:#6a9955}// {color}{color:#4ec9b0}String{color}{color:#ce9178} Test{color} {color:#d4d4d4} {color}{color:#569cd6}12:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokevirtual{color}{color:#d4d4d4} #30 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6}.{color}{color:#dcdcaa}append{color}{color:#569cd6}:(L{color}{color:#4ec9b0}java/lang/String{color}{color:#569cd6};)L{color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6};{color} {color:#d4d4d4} {color}{color:#569cd6}15:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokestatic{color}{color:#d4d4d4} #36 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}relocated/scala211/Logger{color}{color:#569cd6}.{color}{color:#dcdcaa}FQCN{color}{color:#569cd6}:()L{color}{color:#4ec9b0}java/lang/String{color}{color:#569cd6};{color} {color:#d4d4d4} {color}{color:#569cd6}18:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokevirtual{color}{color:#d4d4d4} #30 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6}.{color}{color:#dcdcaa}append{color}{color:#569cd6}:(L{color}{color:#4ec9b0}java/lang/String{color}{color:#569cd6};)L{color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6};{color} {color:#d4d4d4} {color}{color:#569cd6}21:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokevirtual{color}{color:#d4d4d4} #39 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6}.{color}{color:#dcdcaa}toString{color}{color:#569cd6}:()L{color}{color:#4ec9b0}java/lang/String{color}{color:#569cd6};{color} {color:#d4d4d4} {color}{color:#569cd6}24:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokevirtual{color}{color:#d4d4d4} #45 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/io/PrintStream{color}{color:#569cd6}.{color}{color:#dcdcaa}println{color}{color:#569cd6}:(L{color}{color:#4ec9b0}java/lang/String{color}{color:#569cd6};){color}{color:#4ec9b0}V{color} {color:#d4d4d4} {color}{color:#569cd6}27:{color}{color:#d4d4d4} {color}{color:#dcdcaa}new{color}{color:#d4d4d4} #7 {color}{color:#6a9955}// {color}{color:#569cd6}class{color}{color:#6a9955} {color}{color:#4ec9b0}Main$Test{color} {color:#d4d4d4} {color}{color:#569cd6}30:{color}{color:#d4d4d4} {color}{color:#dcdcaa}dup{color} {color:#d4d4d4} {color}{color:#569cd6}31:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokespecial{color}{color:#d4d4d4} #46 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}Main$Test{color}{color:#569cd6}.{color}{color:#dcdcaa}"<init>"{color}{color:#569cd6}:(){color}{color:#4ec9b0}V{color} {color:#d4d4d4} {color}{color:#569cd6}34:{color}{color:#d4d4d4} {color}{color:#dcdcaa}astore_1{color} {color:#d4d4d4} {color}{color:#569cd6}35:{color}{color:#d4d4d4} {color}{color:#dcdcaa}getstatic{color}{color:#d4d4d4} #22 {color}{color:#6a9955}// {color}{color:#569cd6}Field{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/System{color}{color:#569cd6}.{color}{color:#9cdcfe}out{color}{color:#569cd6}:L{color}{color:#4ec9b0}java/io/PrintStream{color}{color:#569cd6};{color} {color:#d4d4d4} {color}{color:#569cd6}38:{color}{color:#d4d4d4} {color}{color:#dcdcaa}new{color}{color:#d4d4d4} #24 {color}{color:#6a9955}// {color}{color:#569cd6}class{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/StringBuilder{color} {color:#d4d4d4} {color}{color:#569cd6}41:{color}{color:#d4d4d4} {color}{color:#dcdcaa}dup{color} {color:#d4d4d4} {color}{color:#569cd6}42:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokespecial{color}{color:#d4d4d4} #25 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6}.{color}{color:#dcdcaa}"<init>"{color}{color:#569cd6}:(){color}{color:#4ec9b0}V{color} {color:#d4d4d4} {color}{color:#569cd6}45:{color}{color:#d4d4d4} {color}{color:#dcdcaa}ldc{color}{color:#d4d4d4} #48 {color}{color:#6a9955}// {color}{color:#4ec9b0}String{color}{color:#ce9178} Logger:{color} {color:#d4d4d4} {color}{color:#569cd6}47:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokevirtual{color}{color:#d4d4d4} #30 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6}.{color}{color:#dcdcaa}append{color}{color:#569cd6}:(L{color}{color:#4ec9b0}java/lang/String{color}{color:#569cd6};)L{color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6};{color} {color:#d4d4d4} {color}{color:#569cd6}50:{color}{color:#d4d4d4} {color}{color:#dcdcaa}aload_1{color} {color:#d4d4d4} {color}{color:#569cd6}51:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokevirtual{color}{color:#d4d4d4} #52 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}Main$Test{color}{color:#569cd6}.{color}{color:#dcdcaa}logger{color}{color:#569cd6}:()L{color}{color:#4ec9b0}org/apache/logging/log4j/spi/ExtendedLogger{color}{color:#569cd6};{color} {color:#d4d4d4} {color}{color:#569cd6}54:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokevirtual{color}{color:#d4d4d4} #55 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6}.{color}{color:#dcdcaa}append{color}{color:#569cd6}:(L{color}{color:#4ec9b0}java/lang/Object{color}{color:#569cd6};)L{color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6};{color} {color:#d4d4d4} {color}{color:#569cd6}57:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokevirtual{color}{color:#d4d4d4} #39 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/lang/StringBuilder{color}{color:#569cd6}.{color}{color:#dcdcaa}toString{color}{color:#569cd6}:()L{color}{color:#4ec9b0}java/lang/String{color}{color:#569cd6};{color} {color:#d4d4d4} {color}{color:#569cd6}60:{color}{color:#d4d4d4} {color}{color:#dcdcaa}invokevirtual{color}{color:#d4d4d4} #45 {color}{color:#6a9955}// {color}{color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}java/io/PrintStream{color}{color:#569cd6}.{color}{color:#dcdcaa}println{color}{color:#569cd6}:(L{color}{color:#4ec9b0}java/lang/String{color}{color:#569cd6};){color}{color:#4ec9b0}V{color} {color:#d4d4d4} {color}{color:#569cd6}63:{color}{color:#d4d4d4} {color}{color:#dcdcaa}return{color} {color:#d4d4d4}}{color} As you can check in the bytecode {color:#4ec9b0}org{color}{color:#d4d4d4}.{color}{color:#4ec9b0}apache{color}{color:#d4d4d4}.{color}{color:#4ec9b0}logging{color}{color:#d4d4d4}.{color}{color:#4ec9b0}log4j{color}{color:#d4d4d4}.{color}{color:#4ec9b0}scala{color}{color:#d4d4d4}.{color}{color:#4ec9b0}Logger{color}{color:#d4d4d4}.{color}{color:#dcdcaa}FQCN{color}{color:#d4d4d4}(){color} has been relocated to {color:#569cd6}Method{color}{color:#6a9955} {color}{color:#4ec9b0}relocated/scala211/Logger{color}{color:#569cd6}.{color}{color:#dcdcaa}FQCN{color}{color:#569cd6}:()L{color}{color:#4ec9b0}java/lang/String{color}{color:#569cd6};{color} {color:#569cd6} {color} > Package relocation appears not to work with Scala > ------------------------------------------------- > > Key: MSHADE-345 > URL: https://issues.apache.org/jira/browse/MSHADE-345 > Project: Maven Shade Plugin > Issue Type: Bug > Reporter: Graham Pople > Priority: Major > Attachments: image (4).png > > > (Apologies if this is a known issue, I searched but couldn't find it.) > I have a small pom.xml that's simply pulling in two dependent libraries from > Maven, and shading them: > {code:java} > <?xml version="1.0" encoding="UTF-8"?> > <project xmlns="http://maven.apache.org/POM/4.0.0" > xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" > xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 > http://maven.apache.org/maven-v4_0_0.xsd"> > <modelVersion>4.0.0</modelVersion> > <groupId>com.couchbase.client</groupId> > <artifactId>scala-deps</artifactId> > <version>1.1.1-SNAPSHOT</version> > <packaging>jar</packaging> > <name>Couchbase Scala Dependencies</name> > <description>Shadowing dependencies for Scala prokect</description> > <dependencies> > <dependency> > <groupId>com.github.plokhotnyuk.jsoniter-scala</groupId> > <artifactId>jsoniter-scala-core_2.12</artifactId> > <version>1.0.0</version> > </dependency> > <dependency> > <groupId>com.github.plokhotnyuk.jsoniter-scala</groupId> > <artifactId>jsoniter-scala-macros_2.12</artifactId> > <version>1.0.0</version> > </dependency> > </dependencies> > <build> > <plugins> > <plugin> > <groupId>org.apache.maven.plugins</groupId> > <artifactId>maven-shade-plugin</artifactId> > <version>3.2.1</version> > <configuration> > <relocations> > <relocation> > <pattern>com.github.plokhotnyuk</pattern> > > <shadedPattern>com.couchbase.client.scala.deps.plokhotnyuk</shadedPattern> > </relocation> > </relocations> > <createSourcesJar>true</createSourcesJar> > <shadeSourcesContent>true</shadeSourcesContent> > <shadedArtifactAttached>true</shadedArtifactAttached> > </configuration> > <executions> > <execution> > <phase>package</phase> > <goals> > <goal>shade</goal> > </goals> > </execution> > </executions> > </plugin> > </plugins> > </build> > </project> {code} > From this I expect to get an uber-jar containing those dependencies, with > classfiles inside > com/couchbase/client/scala/deps/plokhotnyuk/jsoniter_scala/..., and with > those files starting "package com.couchbase.client.scala.deps.plokhotnyuk...". > However, while the files are moved to the correct file structure, the package > names aren't adjusted. Here's a screenshot from the sources jar: > !image (4).png! > > And my experiments with the binary jar itself seem to indicate that the same > issue exists at the bytecode level in the regular jar too, e.g. the > classfiles are in the right place but the package hasn't been changed. > -- This message was sent by Atlassian Jira (v8.20.10#820010)