繁体   English   中英

如何使用maven-assembly-plugin从DependencySet中删除META-INF?

[英]How to remove META-INF from dependencySet using maven-assembly-plugin?

我正在使用maven-assembly-plugin构建我的部署包。 我们的依赖项Jar之一是bcprov-jdk15on.jar ,它是一个签名的JAR。 我在maven-assembly-plugin顶部使用Proguard Shrinking步骤。 Proguard基本上从bcprov-jdk15on.jar中删除了一些类,这会在JVM加载类时导致JAR签名验证失败。

我正在获取此错误堆栈跟踪

java.lang.SecurityException: SHA-256 digest error for org/bouncycastle/tsp/TSPException.class
at sun.security.util.ManifestEntryVerifier.verify(ManifestEntryVerifier.java:223) ~[?:1.8.0_201]
at java.util.jar.JarVerifier.processEntry(JarVerifier.java:243) ~[?:1.8.0_201]
at java.util.jar.JarVerifier.update(JarVerifier.java:230) ~[?:1.8.0_201]
at java.util.jar.JarVerifier$VerifierStream.read(JarVerifier.java:484) ~[?:1.8.0_201]
at sun.misc.Resource.getBytes(Resource.java:124) ~[?:1.8.0_201]
at java.net.URLClassLoader.defineClass(URLClassLoader.java:463) ~[?:1.8.0_201]
at java.net.URLClassLoader.access$100(URLClassLoader.java:74) ~[?:1.8.0_201]
at java.net.URLClassLoader$1.run(URLClassLoader.java:369) ~[?:1.8.0_201]
at java.net.URLClassLoader$1.run(URLClassLoader.java:363) ~[?:1.8.0_201]
at java.security.AccessController.doPrivileged(Native Method) ~[?:1.8.0_201]
at java.net.URLClassLoader.findClass(URLClassLoader.java:362) ~[?:1.8.0_201]
at java.lang.ClassLoader.loadClass(ClassLoader.java:424) ~[?:1.8.0_201]
at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ~[?:1.8.0_201]

我可以简单地在Proguard配置上使用keep选项来完成这项工作(无签名验证错误)。 但是,由于此JAR的大小非常大(4MB),因此我想针对特定的bcprov-jdk15on.jar实际使用它。

有没有办法使用maven-assembly-plugin unsign对依赖项jar的unsign

根据这个 ,我需要简单地删除清单文件和所有签名相关的文件(.SF,.DSA)? 有没有一种方法可以使用maven-assembly-plugin将META-INF文件夹从dependencySets中排除?

谢谢。

使用maven程序集插件是不可能的。

从文档中:

如果您的项目想要将工件打包在uber-jar中, 则Assembly插件仅提供基本支持 要进行更多控制,请使用Maven Shade插件。

但是,如果您不想使用阴影插件,那么抱歉。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM