一尘不染

如何在Spring Boot 1.3中启用Thymeleaf Live Reloading

spring-boot

我创建了一个使用Thymeleaf的Spring Boot
Gradle项目。我的IDE是IntelliJ。我在根文件夹中使用以下命令创建了一个application.properties:

spring.resources.cache-period=0
spring.thymeleaf.cache=false
spring.thymeleaf.mode=LEGACYHTML5

但是不知何故它仍然无法自动重新加载。我必须先点击“ Make
Project”按钮。我有另一个项目,具有相同的配置(不确定IntelliJ设置),足够奇怪,它确实可以刷新。

正在读取我的application.properties,因为可以使用@Value批注提取自定义属性。

供参考,我的build.gradle

buildscript {
    ext {
        springBootVersion = '1.3.1.RELEASE'
    }
    repositories {
        mavenCentral()
        jcenter()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
        classpath("org.springframework:springloaded:1.2.5.RELEASE")
    }
}

apply plugin: 'spring-boot'
apply plugin: 'java'
apply plugin: 'idea'

sourceCompatibility = 1.8
targetCompatibility = 1.8

idea {
    module {
        inheritOutputDirs = false
        outputDir = file("$buildDir/classes/main/")
    }
}

jar {
    baseName = 'earthalive'
    version = ""
}

repositories {
    mavenCentral()
}


dependencies {
    compile('org.springframework.boot:spring-boot-starter-web')
    compile('org.springframework.boot:spring-boot-starter-thymeleaf')
    testCompile('org.springframework.boot:spring-boot-starter-test')
    compile('net.sourceforge.nekohtml:nekohtml:1.9.22')
}

task wrapper(type: Wrapper) {
    gradleVersion = '2.9'
}

有想法吗?


阅读 280

收藏
2020-05-30

共1个答案

一尘不染

根据Spring Boot 1.3发布文档

src/main/resources 使用bootRun时,Spring Boot
Gradle插件不再直接添加到类路径中。如果您想进行实时,现场编辑,我们建议您使用Devtools。如果要恢复Spring Boot
1.2,可以在gradle构建中设置addResources属性。行为。

无论* 您是否使用spring-boot-
devtools,Thymeleaf都依赖于src/main/resources添加到类路径中。幸运的是,spring-boot-
devtools确实有一个选项可以再次打开它以恢复引导1.2行为。
*

添加到您的build.gradle中:

https://docs.spring.io/spring-boot/docs/current/reference/html/build-tool-
plugins-gradle-plugin.html

bootRun {
    addResources = true
}

个人意见:在我看来,Spring-loaded最终将不赞成使用spring-boot-devtools。
在Spring中,动态热交换似乎是一件复杂的事情,我认为Spring团队决定在devtools所使用的快速重载基础上进行工作。

2020-05-30