Java 如何使用maven assembly插件从dependencySet中删除META-INF?
我正在使用maven assembly插件构建我的部署包。我们的Jar依赖项之一是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
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插件——对不起,你被卡住了