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/05 16:50:00 UTC

[jira] [Commented] (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 commented on MSHADE-345:
---------------------------------------------

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)