代码之家  ›  专栏  ›  技术社区  ›  Yanick Salzmann

Maven fat jar复制jarsignk。rsa/sf来自依赖关系

  •  0
  • Yanick Salzmann  · 技术社区  · 7 年前

    当使用maven assembly插件创建包含所有依赖项的fat jar时,所有依赖项都会正确复制到该jar中。问题是其中一个依赖项显然已签名,并且包含jarsign。rsa和jarsign。sf在META-INF中。当我检查创建的fat jar时,这些文件现在也在META-INF文件夹中。这导致jar无法启动,因为签名检查失败。

    我在考虑一些避免这种情况的方法,但什么都想不出来。似乎没有办法将依赖项作为jar包含在jar中。我也在考虑使用maven jarsigner插件创建胖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 回复  |  直到 7 年前
        1
  •  0
  •   Yanick Salzmann    7 年前

    使用 maven-shade-plugin 我可以添加这样的变压器:

    <transformer
            implementation="org.apache.maven.plugins.shade.resource.DontIncludeResourceTransformer">
        <resources>
            <resource>JARSIGNK.RSA</resource>
            <resource>JARSIGNK.SF</resource>
        </resources>
    </transformer>
    

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