Netbeans 8不会重新加载静态Thymeleaf文件

时间:2014-09-29 15:48:58

标签: spring maven netbeans spring-boot thymeleaf

我通过Maven使用Spring Boot和Thymeleaf。当我进行更改时,我似乎无法让Netbeans自动重新部署我的任何Thymeleaf模板文件。为了查看更改,我需要进行完全清理/构建/运行。这需要太长时间。

模板位于src/main/resources/templates。我在src / main / resources /中有一个application.properties文件,其中包含spring.thymeleaf.cache=falsespring.template.cache=false

我在项目设置中打开了“保存时编译”,“保存时复制资源”和“保存时部署

我的maven build会生成一个warbe文件,Netbeans会将其部署到Tomcat,我正在使用注释@EnableAutoConfiguration

Netbeans 对Java类进行热部署更改,但不对src / main / resources /中的任何静态文件进行热部署。

正在使用的软件:

  • Mac OS X 10.9.4
  • Java 1.8
  • Netbeans 8.0.1
  • Tomcat 8.0.12
  • Spring Boot 1.1.7
  • Thymeleaf 2.1.3(通过Spring Boot)

非常感谢任何指导。

7 个答案:

答案 0 :(得分:4)

一个选项是研究配置Thymeleaf的FileTemplateResolver

要使用Spring Boot执行此操作,请定义一个实现名为ITemplateResolver的{​​{1}}接口的bean,如果存在,Spring Boot将采用它而不是默认值,这是如何完成的,并假设您已激活组件扫描,因此将自动选择此配置类:

defaultTemplateResolver

@Configuration public class ThymeleafConfiguration { @Bean public ITemplateResolver defaultTemplateResolver() { TemplateResolver resolver = new FileTemplateResolver(); resolver.setSuffix(".html"); resolver.setPrefix("path/to/your/templates"); resolver.setTemplateMode("HTML5"); resolver.setCharacterEncoding("UTF-8"); resolver.setCacheable(false); return resolver; } } 应该是一个相对路径,当添加到运行时工作目录(cwd)时,将解析为templates目录。如果您不确定,请将其设置为完整的绝对路径,但是上面的bean没有任何意义。由于将prefix属性设置为绝对路径可能会产生相同的效果。

答案 1 :(得分:1)

一直在寻找我的eclipse + thymeleaf + sprint boot重新加载模板的解决方案,以便日志记录....

最后我在这里发现了这个问题,spring.thymeleaf.cache = false和spring.template.cache = false解决了我的问题。

答案 2 :(得分:1)

为了解决这个问题,pom.xml中的spring-boot-maven-plugin应该是这样的:

<plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <dependencies>
                <dependency>
                    <groupId>org.springframework</groupId>
                    <artifactId>springloaded</artifactId>
                    <version>1.2.0.RELEASE</version>
                </dependency>
            </dependencies>
        </plugin>

并将其添加到您的应用程序属性中:

spring.thymeleaf.cache=false

它通常适用于Spring bean。

答案 3 :(得分:1)

除了通过ie将Thymeleaf视图设置为不可缓存之外。您的application.properties中的spring.thymeleaf.cache=false, 尝试在pom.xml中明确定义资源目录:

<build>      
        ...
        <resources>
            <resource>
                <directory>src/main/resources</directory>
            </resource>
        </resources>
        ...
   </build>

答案 4 :(得分:0)

只是说这对我使用Tomcat的外部实例很有效:

  • 使用JRebel或Spring Loaded javaagent作为VM选项运行Tomcat
  • 关闭&#34;编译保存&#34;,&#34;复制资源保存&#34;和&#34;部署保存&#34;
  • 在Netbeans中添加执行编译目标的自定义操作
  • 当您想要查看更新时运行该

http://wiki.netbeans.org/MavenBestPractices#Binding_Maven_goals_to_IDE_actions

https://github.com/spring-projects/spring-loaded

https://zeroturnaround.com/software/jrebel/quickstart/standalone/

或者您可以使用带有spring-boot-maven-plugin和Spring Loaded的嵌入式tomcat,然后您不需要编译操作:

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-hotswapping.html

答案 5 :(得分:0)

我也有这个问题。我注意到Netbeans重新加载了

中的自动网页
  

/ SRC /主/ web应用/

您必须将所有模板从/ src / main / resources / templates移动到此目录。

此外,您还必须更改application.properties文件中的spring boot属性:

  

spring.thymeleaf.prefix =模板/

这对我有用

答案 6 :(得分:0)

我在Netbeans 8.0.2和Windows上遇到过同样的问题。我正在构建一个部署到Tomcat的WAR,但我想尝试Spring Boot。看起来新版本的Netbeans可能会使用Spring Boot插件或使用Eclipse来解决这个问题。将IDE交换到像这样小的东西上似乎很麻烦。我尝试了所有我能找到的建议;弹簧加载,缓存属性,扩展TemplateResolver ...我无法让它们中的任何一个工作。我终于偶然发现了this博客,并按照这些说明解决了我的问题。