问题背景
在Spring Boot项目里整合Freemarker,目标是使用Freemarker模板文件生成代码。
模板在在resources/template里边明明有对应的xxx.ftl文件,但是却报错说没有找到该文件。
freemarker.template.TemplateNotFoundException: Template not found for name "xxx.ftl".
.......
产生问题原因
此时便要注意Maven生成的项目了。在target文件夹,即编译成功的文件夹里查看classes/template文件夹,便可以发现,模板文件并没有被加入到文件夹中,这就是问题产生的根源。
解决方法
-
Maven clean或直接删除后重新编译,看文件是否在classes对应的目录下生成。
-
直接手动将文件添加到对应的目录(不推荐)。
-
如果第一个方法不好使,在pom.xml使用如下设置,使Maven自动将java以外的文件放到target对应的文件夹里。
<resources> <resource> <directory>${basedir}/src/main/java</directory> <includes> <include>**/*.*</include> </includes> <excludes> <exclude>**/*.java</exclude> </excludes> <filtering>false</filtering> </resource> </resources>
注意:
Maven在默认情况下,如果没有指定resources,目前认为自动会将classpath下的src/main/java下的.class文件和src/main/resources下的.xml文件放到target里头的classes文件夹下的package下的文件夹里。如果设定了resources,那么默认的就会失效,就会以指定的includes和excludes为准。