You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Maven assembly插件构建fat jar时如何处理已签名依赖的校验错误

Maven Assembly打包签名依赖报错解决方案

你遇到的签名校验报错,根本原因是maven-assembly-plugin在解压已签名的依赖jar时,会默认校验文件签名和manifest中声明的摘要是否一致,你把签名文件排除的操作是在解压后的打包阶段执行的,校验在解压阶段就已经触发,所以之前的配置不生效。

方案1:关闭assembly插件的签名校验

直接在maven-assembly-plugin的全局配置中添加verifySignature参数关闭解压时的签名校验,配置示例如下:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-assembly-plugin</artifactId>
    <version>3.3.0</version>
    <configuration>
        <!-- 关闭解压依赖时的签名校验 -->
        <verifySignature>false</verifySignature>
        <archive>
            <manifest>
                <!-- 此处配置你的主类等manifest信息 -->
                <mainClass>com.xxx.YourMainClass</mainClass>
            </manifest>
        </archive>
        <descriptors>
            <descriptor>src/main/assembly/assembly.xml</descriptor>
        </descriptors>
    </configuration>
    <executions>
        <execution>
            <id>make-assembly</id>
            <phase>package</phase>
            <goals>
                <goal>single</goal>
            </goals>
        </execution>
    </executions>
</plugin>

保留你原来assembly配置里的unpackOptions排除规则,即可同时把签名相关文件从最终fat jar中移除,避免运行时JVM再校验签名。

方案2:补充排除规则(可选)

如果方案1执行后还有报错,可以在unpackOptions的排除规则中额外添加依赖的manifest文件排除,避免依赖的签名manifest和你项目自身的manifest冲突:

<unpackOptions>
    <excludes>
        <exclude>META-INF/*.SF</exclude>
        <exclude>META-INF/*.DSA</exclude>
        <exclude>META-INF/*.RSA</exclude>
        <exclude>META-INF/*.MF</exclude>
    </excludes>
</unpackOptions>

额外建议

  • 如果你后续不想继续用assembly插件,也可以尝试maven-shade-plugin,它的artifactSet配置支持指定scope,也可以通过include/exclude精准控制要打包的依赖,同时内置了签名文件移除的transformer,也能满足你的多scope依赖打包需求
  • 如果你不想把所有依赖都解压到fat jar中,可以使用spring-boot-maven-plugin,即使是非Spring项目也可以用它的JarLoader实现jar-in-jar加载,该插件支持灵活配置要包含的依赖scope,也内置了签名文件排除逻辑,无需手动编写复杂的assembly配置

内容的提问来源于stack exchange,提问作者Lucien David

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 10:54:03