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)