Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何使用maven assembly插件从dependencySet中删除META-INF?_Java_Maven_Proguard_Maven Assembly Plugin - Fatal编程技术网

Java 如何使用maven assembly插件从dependencySet中删除META-INF?

Java 如何使用maven assembly插件从dependencySet中删除META-INF?,java,maven,proguard,maven-assembly-plugin,Java,Maven,Proguard,Maven Assembly Plugin,我正在使用maven assembly插件构建我的部署包。我们的Jar依赖项之一是bcprov-jdk15on.Jar,它是一个签名的Jar。我在maven组装插件的顶部使用Proguard收缩步骤。Proguard基本上从bcprov-jdk15on.jar中删除了一些类,这会在JVM加载类时导致jar签名验证失败 我得到了这个错误堆栈跟踪 java.lang.SecurityException: SHA-256 digest error for org/bouncycastle/tsp/TS

我正在使用maven assembly插件构建我的部署包。我们的Jar依赖项之一是
bcprov-jdk15on.Jar
,它是一个签名的Jar。我在maven组装插件的顶部使用Proguard收缩步骤。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配置上使用
保留
选项即可实现此功能(无签名验证错误)。然而,由于这个JAR的大小相当大(4MB),所以我想针对这个特定的bcprov-jdk15on.JAR使用它

有没有办法使用maven assembly插件取消依赖项jar的签名

根据,我只需要删除清单文件和所有与签名相关的文件(.SF、.DSA)?有没有办法使用maven assembly插件从dependencySets中排除META-INF文件夹


谢谢。

这在maven assembly插件中是不可能的

从文件中:

如果您的项目想要将您的工件打包到uber jar中, 汇编插件仅提供基本支持要获得更多控制,请使用Maven Shade插件。

但是如果你不想使用shade插件——对不起,你被卡住了