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

Gradle发布配置新增构件后主Spring Boot构件损坏问题排查

问题原因

当你在bootJava这个MavenPublication中手动添加多个artifact后,Gradle会重置该发布的主构件配置——不再沿用Spring Boot插件预设的bootJar作为主产物,而是默认使用Java插件生成的普通Jar(这个Jar只包含编译后的class文件,没有Spring Boot所需的BOOT-INF等目录)作为主构件,所以你看到的主Jar结构异常。

修复方案

有两种可靠的修复方式,任选其一即可:

方式一:明确标记bootJar为主构件

在添加bootJar的artifact时,通过primary = true明确指定它是主构件,避免Gradle自动切换成普通Jar:

publishing { 
    publications { 
        bootJava(MavenPublication) {
            artifact(bootJar) {
                primary = true // 标记为主构件
            }
            
            artifact('build/swagger.zip') { 
                classifier 'swagger-api-docs'
            }
            
            artifact(clientJar) { 
                classifier 'client'
            }
        }
    }
}

方式二:继承Spring Boot预设的发布配置

使用from components.bootJava来继承Spring Boot插件为bootJava发布预设的主构件配置(已经默认把bootJar设为主产物),再添加额外的构件:

publishing { 
    publications { 
        bootJava(MavenPublication) {
            from components.bootJava // 继承预设的bootJar主构件配置
            
            artifact('build/swagger.zip') { 
                classifier 'swagger-api-docs'
            }
            
            artifact(clientJar) { 
                classifier 'client'
            }
        }
    }
}

两种方式都能保证主构件依然是带BOOT-INF目录的Spring Boot可执行Jar,同时正常发布额外的Swagger文档和客户端Jar。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 05:40:20