使用 Spring Boot 1.3,spring-boot-devtools 和 Thymeleaf 模板在 Netbeans 中更改时不会进行实时重新加载

2024-01-11

Spring Boot 1.3 引入了 spring-boot-devtools 来提供与 Spring Reloaded 类似的功能,以重新加载修改的类并更新 Thymeleaf 模板,而无需重新运行应用程序。

我之前一直在使用 Spring Boot 1.2.7(带有 Spring Reloaded),并且我能够动态修改我的模板,而无需重新启动我的 Spring Boot 应用程序。

当我修改和保存 Java 代码/ Thymeleaf 模板时,同一应用程序现在既不会重新加载 Thymeleaf 模板,也不会重新加载/重新启动应用程序。

我正在使用 Netbeans 8.0.2 和嵌入在 Netbeans IDE 中的 Maven(版本 3.0.5)。该应用程序打包为 JAR。

在 Netbeans 中,项目属性 -> 构建 -> 编译下有一个“保存时编译”复选框,已勾选。 我通过修改 .java 文件并检查 /target/classes 中的时间戳来验证这实际上是否有效。

这里有Netbeans 中项目的“运行操作”属性: https://i.stack.imgur.com/qZVsa.png

我的 pom.xml 中有以下依赖项(包括其他依赖项,因不相关而被排除):

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-devtools</artifactId>
</dependency> 
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-thymeleaf</artifactId>
</dependency>
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

有了这个,我就该出发了,因为 Spring Boot 博客提到了以下内容:

“当包含 spring-boot-devtools 模块时,任何类路径文件更改都会自动触发应用程序重新启动。”

并在Spring Boot 官方文档。 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#howto-hotswapping

编辑: 我尝试使用带有版本标签 1.2.7.RELEASE 的 spring-boot-maven-plugin,并且在保存模板时,我的 Thymeleaf 模板的更改突然在浏览器中可见。看来至少 Thymeleaf 模板的问题不是因为 spring-boot-devtools,而是因为 spring-bot-maven-plugin。

问题可以分为两部分:

1) 如果使用较新版本的 spring-boot-maven-plugin (1.3.0.RELEASE),Thymeleaf 模板将由于某种原因而不会重新加载 2) 即使 /target/classes 中的 .class 文件在修改和保存相应的 .java 文件时更新,应用程序重新加载/重新启动触发器也不会发生。

更新:已验证开发工具未加载(主线程名称未重新启动Main)。 通过将 Netbeans 项目属性中的“运行项目操作”中的“执行目标”更改为以下内容,解决了 2) 问题:

process-classes org.codehaus.mojo:exec-maven-plugin:1.2.1:exec

旧的执行目标是package spring-boot:run。谷歌搜索了一下发现,当项目使用 spring-boot:run 运行时,其他人遇到了 spring-boot-devtools 的问题。

现在唯一的问题是 Thymeleaf 模板在保存时不会实时更新。


将 Netbeans 项目属性中的运行项目操作中的执行目标更改为以下内容:

process-classes org.codehaus.mojo:exec-maven-plugin:1.2.1:exec代替package spring-boot:run启用 Spring Boot Devtools 并按预期重新启动。

Thymeleaf 模板的问题归因于以下事实:在 Spring Boot 1.3 中,Spring Boot Maven 插件不再将 src/main/resources 直接添加到类路径中。有关详细信息,请参阅发行说明。 https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-1.3-Release-Notes#spring-bootrun-resources

将显式资源目录位置(在我的例子中为 src/main/resources)配置为 pom.xml 可以解决 Thymeleaf 模板不重新加载的问题:

<build>
   ...
   <resources>
     <resource>
       <directory> src/main/resources </directory>
     </resource>
   </resources>
  ... 
 </build>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 Spring Boot 1.3,spring-boot-devtools 和 Thymeleaf 模板在 Netbeans 中更改时不会进行实时重新加载 的相关文章

随机推荐