[ 
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)

Reply via email to