[ https://issues.apache.org/jira/browse/MSHADE-156?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14680987#comment-14680987 ]
Elliott Clark commented on MSHADE-156: -------------------------------------- Pretty sure that we're seeing this in https://issues.apache.org/jira/browse/HBASE-13889 We have the shad plugin configured like so: {code} <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-shade-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>shade</goal> </goals> <configuration> <shadedArtifactAttached>false</shadedArtifactAttached> <promoteTransitiveDependencies>true</promoteTransitiveDependencies> <dependencyReducedPomLocation>${project.build.directory}/dependency-reduced-pom.xml</dependencyReducedPomLocation> <artifactSet> <includes> <include>*:*</include> </includes> <excludes> <exclude>org.apache.hbase:hbase-resource-bundle</exclude> <exclude>org.slf4j:*</exclude> <exclude>com.google.code.findbugs:*</exclude> <exclude>com.github.stephenc.findbugs:*</exclude> <exclude>org.apache.htrace:*</exclude> <exclude>log4j:*</exclude> <exclude>commons-logging:*</exclude> </excludes> </artifactSet> <relocations> <relocation> <pattern>com</pattern> <shadedPattern>org.apache.hadoop.hbase.shaded.com</shadedPattern> <excludes> <exclude>com.sun.**</exclude> <exclude>com.ibm.**</exclude> </excludes> </relocation> <relocation> <pattern>net</pattern> <shadedPattern>org.apache.hadoop.hbase.shaded.net</shadedPattern> </relocation> <relocation> <pattern>io</pattern> <shadedPattern>org.apache.hadoop.hbase.shaded.io</shadedPattern> </relocation> <relocation> <pattern>org</pattern> <shadedPattern>org.apache.hadoop.hbase.shaded.org</shadedPattern> <excludes> <exclude>org.apache.hadoop.**</exclude> <exclude>org.apache.commons.logging.**</exclude> <exclude>org.w3c.**</exclude> <exclude>org.xml.**</exclude> <exclude>org.slf4j.**</exclude> </excludes> </relocation> </relocations> <transformers> <!-- Need to filter out some extraneous license files. Don't use the ApacheLicenseRT because it just removes all META-INF/LICENSE(.txt)? files, including ours. --> <transformer implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer"> <resources> <resource>LICENSE.txt</resource> <resource>ASL2.0</resource> </resources> </transformer> <!-- Where notices exist, just concat them --> <transformer implementation="org.apache.maven.plugins.shade.resource.ApacheNoticeResourceTransformer"> <addHeader>false</addHeader> <projectName>${project.name}</projectName> </transformer> </transformers> </configuration> </execution> </executions> </plugin> {code} This is relocating strings like: {code}"com.sun.security.auth.UnixPrincipal"{code} to {code}"org/apache/hadoop/hbase/shaded/com.sun.security.auth.module.UnixLoginModule"{code} > shade plugin is transforming also strings that are not supposed to be > transformed > --------------------------------------------------------------------------------- > > Key: MSHADE-156 > URL: https://issues.apache.org/jira/browse/MSHADE-156 > Project: Maven Shade Plugin > Issue Type: Bug > Affects Versions: 2.1 > Reporter: Neeme Praks > > I'm shading several third party libraries into a single JAR. In the context > of this issue, there are two important libraries: > 1. com.nothome:javaxdelta:2.0.1 - this library is in "at.spardat.xma.xdelta" > package. > 2. ch.qos.logback:logback-classic:1.0.11 - in this library, in class > ch.qos.logback.classic.spi.StackTraceElementProxy, there is a method to > convert stack trace elements into strings: > {code} > public String getSTEAsString() { > if (steAsString == null) { > steAsString = "at " + ste.toString(); > } > return steAsString; > } > {code} > I use "org.myorgname.appname.shaded" package for shading. > During shading, the constant "at " is replaced with > "org.myorgname.appname.shaded.at" -- shade plugin thinks that the "at" in the > beginning of that string is a package name and shades it. > This results in an unfortunate side-effect: all logged stack traces now look > like this: > {noformat} > Caused by: java.util.zip.ZipException: error in opening zip file > org.myorgname.appname.shaded.at java.util.zip.ZipFile.open(Native > Method) ~[na:1.6.0_19] > org.myorgname.appname.shaded.at > java.util.zip.ZipFile.<init>(ZipFile.java:114) ~[na:1.6.0_19] > org.myorgname.appname.shaded.at > java.util.zip.ZipFile.<init>(ZipFile.java:131) ~[na:1.6.0_19] > {noformat} > Possible fixes: > * instead of just checking the first part of the package (at), check for the > full package (at.spardat.xma.xdelta). > * allow to configure shade plugin to ignore certain string constants in > certain classes (this would solve also some other issues we have with shade > plugin being too eager). > * both of the above. -- This message was sent by Atlassian JIRA (v6.3.4#6332)