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

时间:2016-01-07 12:25:46

标签: intellij-idea gradle spring-boot thymeleaf

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

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

但不知怎的,它仍然没有自动重装。我必须先点击“制作项目”按钮。我有另一个项目,具有相同的配置(不确定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'
}

想法?

3 个答案:

答案 0 :(得分:6)

根据Spring Boot 1.3 release documentation

  

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

如果您使用的是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最终会被弃用而不赞成spring-boot-devtools。在Spring中,动态hotswapping似乎是一个复杂的事情,我认为Spring团队决定在devtools使用的快速重新加载的基础上工作。

答案 1 :(得分:1)

由于您使用的是1.3的Spring启动 - 也许其他项目正在使用devtools - 它会自动刷新springBoot应用程序:

compile 'org.springframework.boot:spring-boot-devtools'

spring-boot-devtools使得使用Thymeleaf非常适合我 - 与Live Reload chrome / firefox扩展相结合,您甚至不必刷新浏览器。 Spring docs

dependencies {
    compile 'org.springframework.boot:spring-boot-devtools'
    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')
}

答案 2 :(得分:1)

Eclipse将在保存时自动编译项目。 IntelliJ没有。编译操作是触发重新加载的原因。其中,作为IntelliJ用户,我觉得很烦人。

我在我的博客上审核了devtools并重新加载:https://springframework.guru/spring-boot-developer-tools/