Spring-boot和spring boot dev工具集成未显示更新的类更改

时间:2017-10-11 22:13:22

标签: spring spring-boot gradle spring-boot-devtools

我正在尝试按this example进行spring boot dev toolsbuild --continuous集成以执行自动重启。当我运行bootRun任务时,构建文件夹中的类会更新,但应用程序仍然会与旧类进行对话。在示例中,build -continuous任务如下所示。我的项目有自定义任务来运行应用程序。现在使用h2Run当我对应用程序进行更改时,它正在重建类,但正在运行的应用程序没有显示更改。如何更改我的自定义bootRun { classpath = sourceSets.main.runtimeClasspath + configurations.dev } 任务,以便加载更改的类?谢谢。

示例中的启动运行任务

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
}

我的bootRun自定义任务

%include "\C:\Users\jhggg\Documents\SAS_Code\base.sas";

1 个答案:

答案 0 :(得分:1)

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

文章指出:

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

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

  4.   

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

但是,如果我执行gradle bootRun 第一次gradle build --continuous 第二次,则在应用程序运行后,应用程序会按预期重新启动编辑一个java文件。

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