1

我正在尝试按照这个例子来做spring bootspring boot dev tools集成来做自动重启。当我运行任务时,构建文件夹中的类正在更新,build --continuous但应用程序仍然与旧类对话。在示例中,bootRun任务如下。我的项目有运行应用程序的自定义任务。现在,build -continuous当我对应用程序进行更改时,它正在重建类,但正在运行的应用程序没有显示更改。如何更改我的自定义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
}
4

1 回答 1

1

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

文章指出:

  1. 在第一个终端,将 Gradle 构建作为一个连续任务启动: gradle build --continuous

  2. 在第二个终端,启动 Gradle bootRun 任务:gradle bootRun

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

但是,如果我在应用程序运行后执行gradle bootRun firstgradle build --continuous second,则每当我编辑 java 文件时,应用程序都会按预期重新启动。

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

于 2017-10-21T18:22:27.053 回答