You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@maven.apache.org by "sify21 (Jira)" <ji...@apache.org> on 2022/10/19 09:44:00 UTC

[jira] [Commented] (MSHADE-406) relocated multi-release classes aren't moved to a new directory

    [ https://issues.apache.org/jira/browse/MSHADE-406?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17620157#comment-17620157 ] 

sify21 commented on MSHADE-406:
-------------------------------

I posted a work-around here: https://stackoverflow.com/questions/74119618/maven-shade-plugin-relocate-classes-under-meta-inf-versions-in-multi-release-jar/74123163#74123163

> relocated multi-release classes aren't moved to a new directory
> ---------------------------------------------------------------
>
>                 Key: MSHADE-406
>                 URL: https://issues.apache.org/jira/browse/MSHADE-406
>             Project: Maven Shade Plugin
>          Issue Type: Bug
>            Reporter: Brian Gruber
>            Priority: Major
>
> In a project in which a dependency has a multi-release jar, classes that match a relocation pattern and are in the {{META-INF/versions}} directories are not moved to the new directory structure. They are, however, rewritten so that the class file itself specifies the new package name.
> Sample project: [https://gist.github.com/bgruber/5fb045759505da5150d3e93ec5c6010e]
> The generated jar file still contains classes like this:
> {code:java}
> $ jar tf target/relocation-test-SNAPSHOT-1.0.jar | grep versions | head
> META-INF/versions/
> META-INF/versions/9/
> META-INF/versions/9/org/
> META-INF/versions/9/org/bouncycastle/
> META-INF/versions/9/org/bouncycastle/crypto/
> META-INF/versions/9/org/bouncycastle/crypto/AsymmetricCipherKeyPair.class
> META-INF/versions/9/org/bouncycastle/crypto/Digest.class
> META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar$Property.class
> META-INF/versions/9/org/bouncycastle/crypto/CryptoServicesRegistrar.class
> META-INF/versions/9/org/bouncycastle/crypto/KeyGenerationParameters.class{code}
> I expect these class files to be under {{META-INF/versions/9/com/dd/org/bouncycastle}}. Extracting one of them from the jar and examining it, the class file does appear to have been modified to have the new package name:
> {code:java}
> $ jar xf target/relocation-test-SNAPSHOT-1.0.jar META-INF/versions/9/org/bouncycastle/crypto/Digest.class
> $ javap META-INF/versions/9/org/bouncycastle/crypto/Digest.class
> Compiled from "Digest.java"
> public interface com.dd.org.bouncycastle.crypto.Digest {
>   public abstract java.lang.String getAlgorithmName();
>   public abstract int getDigestSize();
>   public abstract void update(byte);
>   public abstract void update(byte[], int, int);
>   public abstract int doFinal(byte[], int);
>   public abstract void reset();
> }{code}



--
This message was sent by Atlassian Jira
(v8.20.10#820010)