You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "Javier Neira Sanchez (Jira)" <ji...@apache.org> on 2023/02/06 06:33:01 UTC
[jira] [Comment Edited] (MSHADE-345) Package relocation appears not to work with Scala
[ 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:32 AM:
---------------------------------------------------------------------
Hi! i am trying to reproduce the issue but i am not sure on how do it:
I have this pom.xml:
```
<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>
```
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}
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:
{color:#808080}<{color}{color:#569cd6}project{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}modelVersion{color}{color:#808080}>{color}{color:#d4d4d4}4.0.0{color}{color:#808080}</{color}{color:#569cd6}modelVersion{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}groupId{color}{color:#808080}>{color}{color:#d4d4d4}org.apache.maven.its.shade.rie{color}{color:#808080}</{color}{color:#569cd6}groupId{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}artifactId{color}{color:#808080}>{color}{color:#d4d4d4}test{color}{color:#808080}</{color}{color:#569cd6}artifactId{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}version{color}{color:#808080}>{color}{color:#d4d4d4}1.0{color}{color:#808080}</{color}{color:#569cd6}version{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}packaging{color}{color:#808080}>{color}{color:#d4d4d4}jar{color}{color:#808080}</{color}{color:#569cd6}packaging{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}name{color}{color:#808080}>{color}{color:#d4d4d4}MSHADE-345{color}{color:#808080}</{color}{color:#569cd6}name{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}description{color}{color:#808080}>{color}
{color:#d4d4d4} Test handling scala package relocation.{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}description{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}dependencies{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}dependency{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}groupId{color}{color:#808080}>{color}{color:#d4d4d4}org.apache.logging.log4j{color}{color:#808080}</{color}{color:#569cd6}groupId{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}artifactId{color}{color:#808080}>{color}{color:#d4d4d4}log4j-api-scala_2.11{color}{color:#808080}</{color}{color:#569cd6}artifactId{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}version{color}{color:#808080}>{color}{color:#d4d4d4}12.0{color}{color:#808080}</{color}{color:#569cd6}version{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}dependency{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}dependency{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}dependencies{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}build{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}plugins{color}{color:#808080}>{color}
{color:#808080}{color:#808080} <plugin>{color}{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}groupId{color}{color:#808080}>{color}{color:#d4d4d4}org.apache.maven.plugins{color}{color:#808080}</{color}{color:#569cd6}groupId{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}artifactId{color}{color:#808080}>{color}{color:#d4d4d4}maven-jar-plugin{color}{color:#808080}</{color}{color:#569cd6}artifactId{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}configuration{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}archive{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}manifest{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}mainClass{color}{color:#808080}>{color}{color:#d4d4d4}Main{color}{color:#808080}</{color}{color:#569cd6}mainClass{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}manifest{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}archive{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}configuration{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}plugin{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}plugin{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}groupId{color}{color:#808080}>{color}{color:#d4d4d4}org.apache.maven.plugins{color}{color:#808080}</{color}{color:#569cd6}groupId{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}artifactId{color}{color:#808080}>{color}{color:#d4d4d4}maven-shade-plugin{color}{color:#808080}</{color}{color:#569cd6}artifactId{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}version{color}{color:#808080}>{color}{color:#d4d4d4}3.2.4{color}{color:#808080}</{color}{color:#569cd6}version{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}executions{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}execution{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}id{color}{color:#808080}>{color}{color:#d4d4d4}attach-shade-211{color}{color:#808080}</{color}{color:#569cd6}id{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}phase{color}{color:#808080}>{color}{color:#d4d4d4}package{color}{color:#808080}</{color}{color:#569cd6}phase{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}goals{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}goal{color}{color:#808080}>{color}{color:#d4d4d4}shade{color}{color:#808080}</{color}{color:#569cd6}goal{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}goals{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}configuration{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}shadedArtifactAttached{color}{color:#808080}>{color}{color:#d4d4d4}false{color}{color:#808080}</{color}{color:#569cd6}shadedArtifactAttached{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}artifactSet{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}includes{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}include{color}{color:#808080}>{color}{color:#d4d4d4}org.apache.logging.log4j:log4j-api-scala_2.11{color}{color:#808080}</{color}{color:#569cd6}include{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}include{color}{color:#808080}>{color}{color:#d4d4d4}org.scala-lang:scala-library{color}{color:#808080}</{color}{color:#569cd6}include{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}includes{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}artifactSet{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}relocations{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}relocation{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}pattern{color}{color:#808080}>{color}{color:#d4d4d4}org.apache.logging.log4j.scala{color}{color:#808080}</{color}{color:#569cd6}pattern{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}shadedPattern{color}{color:#808080}>{color}{color:#d4d4d4}relocated.scala211{color}{color:#808080}</{color}{color:#569cd6}shadedPattern{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}relocation{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}relocation{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}pattern{color}{color:#808080}>{color}{color:#d4d4d4}scala{color}{color:#808080}</{color}{color:#569cd6}pattern{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}<{color}{color:#569cd6}shadedPattern{color}{color:#808080}>{color}{color:#d4d4d4}relocated.scala211{color}{color:#808080}</{color}{color:#569cd6}shadedPattern{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}relocation{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}relocations{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}configuration{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}execution{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}executions{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}plugin{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}plugins{color}{color:#808080}>{color}
{color:#d4d4d4} {color}{color:#808080}</{color}{color:#569cd6}build{color}{color:#808080}>{color}
{color:#808080}</{color}{color:#569cd6}project{color}{color:#808080}>{color}
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)