当使用maven-assembly-plugin创建一个包含所有依赖项的胖jar时,会正确地复制到该jar。问题是其中一个依赖项显然是签名的,并且在META-INF中包含一个jarsign.rsa和jarsign.sf。当我检查创建的胖罐时,这些文件现在也在META-INF文件夹中。这会导致jar无法启动,因为签名检查失败。
我正在考虑一些避免这种情况的方法,但却找不到任何东西。似乎没有办法将依赖项作为jar包含在jar中。我还在考虑使用maven-jarsigner-plugin创建胖jar的签名,但这似乎是设置密钥库而不仅仅是为了覆盖依赖项中的那个而烦恼。
如此快速的图形摘要:
-- t4sqlmx-3.5jar
- META-INF
- JARSIGNK.RSA
- JARSIGNK.SF
-- app.fat.jar (has t4sqlmx as dependency)
- META-INF
- JARSIGNK.RSA (from t4sqlmx-3.5jar copied)
- JARSIGNK.SF (also copied)
答案 0 :(得分:0)
使用maven-shade-plugin
我能够添加这样的变换器:
<transformer
implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
<resources>
<resource>JARSIGNK.RSA</resource>
<resource>JARSIGNK.SF</resource>
</resources>
</transformer>
现在从依赖项中忽略这些文件。