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

Gradle多项目中如何让Spring Boot Devtools重载子项目代码?

解决Spring Boot DevTools无法重载Gradle子项目变更的问题

1. 确保子项目依赖为项目级动态依赖

在buildSrc的dueuno-application.gradle插件中,将主项目(app-test)对其他子项目的依赖声明为项目依赖,而非预构建的jar依赖:

// dueuno-application.gradle中配置主项目依赖
dependencies {
    implementation project(':elements-core')
    implementation project(':commons-utils')
    // 其他业务依赖...
}

这种配置让Gradle直接使用子项目的实时编译输出,而非打包后的静态jar,确保代码变更能及时同步到主项目的classpath。

2. 配置BootRun任务关联子项目编译

修改dueuno-application.gradle中的bootRun任务,让它依赖子项目的编译任务,同时将子项目的输出目录加入主项目classpath:

bootRun {
    // 关联子项目的编译任务,代码变更时自动触发编译
    dependsOn ':elements-core:classes', ':commons-utils:classes'
    // 将子项目的编译输出目录加入主项目运行时classpath
    classpath += files(project(':elements-core').sourceSets.main.output.classesDirs)
    classpath += files(project(':commons-utils').sourceSets.main.output.classesDirs)
    // 开启Gradle连续构建,自动检测子项目变更
    continuous true
}

3. 扩展DevTools的监控路径

在主项目的application.yml(或application.properties)中,配置DevTools监控子项目的源码和编译输出目录,确保变更被及时检测:

# application.yml
spring:
  devtools:
    restart:
      # 添加子项目的源码与编译输出目录到监控列表
      additional-paths:
        - "../elements-core/src/main/java"
        - "../elements-core/src/main/groovy"
        - "../commons-utils/src/main/java"
        - "../commons-utils/build/classes/java/main"
        - "../commons-utils/build/classes/groovy/main"
      # 排除无需监控的目录,减少不必要的重启
      exclude: "static/**,public/**"

注意路径需根据你的实际项目目录结构调整,确保是相对于主项目配置文件的正确相对路径。

4. IDE自动编译配置(可选但推荐)

如果使用IDE开发(如IntelliJ IDEA),开启自动编译功能加速变更同步:

  • 打开Settings → Build, Execution, Deployment → Compiler,勾选Build project automatically
  • 按Ctrl+Shift+A(Windows/Linux)或Cmd+Shift+A(Mac)搜索Registry,找到compiler.automake.allow.when.app.running并勾选

修改子项目代码时,IDE会自动触发Gradle编译,DevTools就能检测到变更并重启应用。

5. 验证配置

执行./gradlew :app-test:bootRun启动应用,修改elements-core或commons-utils中的代码:

  1. 观察控制台是否触发子项目编译
  2. 确认DevTools是否自动重启应用
  3. 验证代码变更是否生效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 21:17:39