Spring-boot 和 spring boot 开发工具集成未显示更新的 class 更改

Spring-boot and spring boot dev tools integration not showing the updated class changes

我正在尝试按照 this examplespring bootspring boot dev tools 集成来做自动重启。当我执行 运行 build --continuous 任务时,构建文件夹中的 类 正在更新,但应用程序仍在与旧的 类 通信。在示例中,bootRun 任务如下所示。我的项目有针对 运行 应用程序的自定义任务。现在 build -continuous 当我更改应用程序时它正在重建 类 但 运行ning 应用程序没有显示更改。如何更改我的自定义 h2Run 任务,以便它加载更改后的 类?谢谢。

示例中的启动运行任务

bootRun {
    classpath = sourceSets.main.runtimeClasspath + configurations.dev
}

我的 bootRun 自定义任务

class Run extends JavaExec {
    Run() {
        group "application"
        dependsOn project.tasks.classes, project.tasks.pathingJar
        classpath = project.files("$project.buildDir/classes/main", "$project.buildDir/resources/main", project.tasks.pathingJar.archivePath)
        main = "com.mycompany.Application"
    }
}

task h2Run(type: Run) {
    classpath = sourceSets.main.runtimeClasspath + configurations.dev // this is not working
    description "Start $appName using H2 database"
    args "--spring.profiles.active=dev"
    mustRunAfter 'cleanH2'
    dependsOn copyContentTypeLibraries
}

我浏览了您链接到的 DZone 文章。我没有添加您的自定义 Run class 或任务,我只是从文章中直接抓取了 bootRun 任务。即使没有您的任何自定义代码,我最初也遇到了与您相同的行为。

文章指出:

  1. At the first terminal, start Gradle build as a continuous task: gradle build --continuous

  2. At the second terminal, start the Gradle bootRun task: gradle bootRun

如果我按此顺序 执行这些操作,我还会看到我的 classes 重新编译,但 servlet 容器不会获取更改。就像你描述的那样。

但是,如果我gradle bootRun第一个gradle build --continuous第二个,申请之后是运行,每当我编辑 java 文件时,应用程序都会按预期重新启动。

您是否尝试过以相反的顺序在两个终端windows中执行命令?