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

使用Gradle与Spring Boot插件跨模块复制重打包Jar的方法

解决多模块Gradle项目中复制Spring Boot重打包Jar的问题

这个问题我之前帮不少开发者解决过——核心原因就是你没找准Spring Boot重打包Jar的生成任务!默认的jar任务产出的是普通Jar,而Spring Boot插件的bootJar任务才会生成那个包含所有依赖的可执行重打包Jar。下面给你两种最常用的解决方案:

方案一:直接通过任务依赖复制Jar

假设你的Spring Boot模块叫app-module,Docker构建模块叫docker-module,在docker-module的build.gradle里添加以下配置:

Groovy DSL 版本

// 注册一个复制重打包Jar的任务
tasks.register('copyBootJar', Copy) {
    // 先确保Spring Boot模块的bootJar任务执行完成
    dependsOn(':app-module:bootJar')
    // 指定源文件:app-module的bootJar任务输出的Jar
    from project(':app-module').tasks.bootJar.outputs.files
    // 指定目标目录,比如放到docker模块的build/docker/jars下,方便Dockerfile引用
    into layout.buildDirectory.dir('docker/jars')
}

// 让你的Docker构建任务(比如dockerBuild)依赖这个复制任务
tasks.named('dockerBuild') {
    dependsOn copyBootJar
}

Kotlin DSL 版本

tasks.register<Copy>("copyBootJar") {
    dependsOn(":app-module:bootJar")
    from(project(":app-module").tasks.bootJar.get().outputs.files)
    into(layout.buildDirectory.dir("docker/jars"))
}

tasks.named("dockerBuild") {
    dependsOn("copyBootJar")
}

执行时,直接运行./gradlew dockerBuild,Gradle会自动先构建app-module的重打包Jar,再复制到指定目录,最后执行Docker构建。

方案二:用Docker插件直接关联bootJar产物

如果你用的是Jib这类Gradle Docker插件,完全可以跳过手动复制步骤,直接让插件使用bootJar的产物:

Jib插件配置示例(Groovy DSL)

plugins {
    id 'com.google.cloud.tools.jib' version '3.4.0'
}

jib {
    from {
        image = 'openjdk:17-jre-slim' // 基础镜像
    }
    to {
        image = 'your-registry/your-app-image' // 目标镜像名
    }
    container {
        mainClass = 'com.yourcompany.yourapp.MainApplication' // 主类
    }
    // 关联bootJar任务,确保先构建重打包Jar
    dependsOn ':app-module:bootJar'
    // 指定使用app-module的bootJar产物
    jar {
        path = project(':app-module').tasks.bootJar.outputs.files.singleFile.path
    }
}

关键注意点

  • 确保你的Spring Boot模块中,bootJar任务是启用的:Spring Boot插件默认会禁用普通的jar任务,所以不用担心混淆产物,但如果手动开启了jar任务,一定要明确指定依赖bootJar而非jar。
  • 替换示例中的模块名称(app-module、docker-module)、镜像名、主类等为你项目的实际信息。

内容的提问来源于stack exchange,提问作者M. Villalobos

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:59:05