如题,启动 Spring 项目报错:Cannot find template location: classpath:/templates/ (please add some templates or check your Thymeleaf configuration)。主要是因为项目引入了 spring-boot-starter-thymeleaf 依赖,thymeleaf 是一种模板语言,可以动态或者静态显示文本内容。

正常情况下,是不需求配置 pom.xml 的(官网 securing a web application 是不包含 pom.xml 中 resource 部分配置的,但运行正常)。

检查 src/main/resources 路径下是否存在 templates 文件夹,且文件中是否存在内容。

如果项目中不存在模板内容且运行正常,想要关闭这条警告,可以在 application.properties 中添加 resource 配置项:

spring.thymeleaf.check-template=false
spring.thymeleaf.check-template-location=false

表示不再检查 templates 文件夹下是否存在模板。

但我的情况显然不是这样,因为我需要使用模板,并且已经在 templates 文件夹下创建了模板文件,文件后缀为 .html

检查 pom.xmlresources 设置如下:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>*.xml</include>
                <include>*.properties</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>com.example.DemoApplication</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

解决方法:添加 <include>**/*.html</include>

修改后的:

<build>
    <resources>
        <resource>
            <directory>src/main/resources</directory>
            <includes>
                <include>*.xml</include>
                <include>*.properties</include>
                <include>**/*.html</include>
            </includes>
        </resource>
    </resources>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
            <configuration>
                <mainClass>com.example.DemoApplication</mainClass>
            </configuration>
        </plugin>
    </plugins>
</build>

个人尝试过 <include>*/*.html</include> 也能生效,不清楚两个星号有什么区别。