我正在使用maven shade插件为我的项目生成一个合并jar.jar是按预期生成的,当我尝试使用jar并运行它时,我得到了一个
java.lang.SecurityException:Manifest主要属性错误的签名文件摘要无效.
我搜索了上面的错误消息,许多人建议从META-INF目录中排除清单签名.因此,我已经包含了从目录中排除这些文件的步骤[我看到两个文件的名称JARSIGN_.RSA
和JARSIGN_.SF
],但由于一些奇怪的原因,maven shade插件无法从META-INF目录中排除这些文件.谁能解释一下我可能做错了什么?我的pom.xml在下面,我用来生成jar的命令是:
mvn clean package shade:shade
的pom.xml
4.0.0 com.abc.xyz myjar 1.0-SNAPSHOT jar http://maven.apache.org com.google.code.gson gson 2.3.1 com.google.guava guava 18.0 org.apache.maven.plugins maven-compiler-plugin 2.3.2 1.8 UTF-8 org.apache.maven.plugins maven-shade-plugin 2.4.2 package shade *:* META-INF/*.SF META-INF/*.DSA META-INF/*.RSA true com.google.guava:guava com.google.code.gson:gson com.abc.xyz.HelloWorld
Ralf.. 6
也许这个插件的配置语法已经改变了,但是这对我来说在过去使用着色器插件的1.5版本时:
org.apache.maven.plugins maven-shade-plugin 1.5 META-INF/JARSIGN_.SF package shade
我没有尝试使用通配符.但是查看文档,以下内容应该排除所有.SF
文件:
.SF
有关其他示例,请参阅此主题
也许这个插件的配置语法已经改变了,但是这对我来说在过去使用着色器插件的1.5版本时:
org.apache.maven.plugins maven-shade-plugin 1.5 META-INF/JARSIGN_.SF package shade
我没有尝试使用通配符.但是查看文档,以下内容应该排除所有.SF
文件:
.SF
有关其他示例,请参阅此主题