Spring-boot 和 spring boot 开发工具集成未显示更新的 class 更改
Spring-boot and spring boot dev tools integration not showing the updated class changes
我正在尝试按照 this example 做 spring boot
和 spring 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
任务。即使没有您的任何自定义代码,我最初也遇到了与您相同的行为。
文章指出:
At the first terminal, start Gradle build as a continuous task:
gradle build --continuous
At the second terminal, start the Gradle bootRun task: gradle
bootRun
如果我按此顺序 执行这些操作,我还会看到我的 classes 重新编译,但 servlet 容器不会获取更改。就像你描述的那样。
但是,如果我gradle bootRun
第一个,gradle build --continuous
第二个,申请之后是运行,每当我编辑 java 文件时,应用程序都会按预期重新启动。
您是否尝试过以相反的顺序在两个终端windows中执行命令?
我正在尝试按照 this example 做 spring boot
和 spring 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
任务。即使没有您的任何自定义代码,我最初也遇到了与您相同的行为。
文章指出:
At the first terminal, start Gradle build as a continuous task:
gradle build --continuous
At the second terminal, start the Gradle bootRun task:
gradle bootRun
如果我按此顺序 执行这些操作,我还会看到我的 classes 重新编译,但 servlet 容器不会获取更改。就像你描述的那样。
但是,如果我gradle bootRun
第一个,gradle build --continuous
第二个,申请之后是运行,每当我编辑 java 文件时,应用程序都会按预期重新启动。
您是否尝试过以相反的顺序在两个终端windows中执行命令?