Maven fat jar从依赖

时间:2018-03-15 14:06:51

标签: java maven jar

当使用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)

1 个答案:

答案 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>

现在从依赖项中忽略这些文件。