Freemarker 配置问题(Maven 编译失败)

Posted

技术标签:

【中文标题】Freemarker 配置问题(Maven 编译失败)【英文标题】:Freemarker Configuration issue (Maven Compilation failure) 【发布时间】:2013-08-02 21:52:20 【问题描述】:

我正在开发一个使用 freemarker 的项目,我需要进行这种调用:

messageContent.append(FreeMarkerTemplateUtils.processTemplateIntoString(freemarkerConfig.getConfiguration().getTemplate("sampleTemplate.ftl"), model));

但是当我尝试做 mvn clean package 时,我得到了

"无法访问freemarker.template.Configuration [ERROR] freemarker.template.Configuration 的类文件未找到”。

当我尝试显式创建配置对象(Configuration config = new Configuration()) 时,Eclipse 会按预期建议我导入“freemarker.template.Configuration”。我导入它,错误在 Eclipse 中消失了,但是当我再次尝试执行 mvn clean package 时,我遇到了“包 freemarker.template 不存在”的构建失败。

我的 pom 文件有:

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.20</version>
    <scope>runtime</scope>
</dependency>

我还需要做什么吗? 提前致谢!

【问题讨论】:

【参考方案1】:

您使用了错误的依赖范围。 runtime 范围不用于编译。来自文档:

这个范围表示依赖不是编译所必需的,而是执行所必需的。它在运行时和测试类路径中,但不在编译类路径中。

所以将范围更改为compile

<dependency>
    <groupId>org.freemarker</groupId>
    <artifactId>freemarker</artifactId>
    <version>2.3.20</version>
    <scope>compile</scope>
</dependency>

见maven dependency scope.

【讨论】:

【参考方案2】:
    <dependency>
          <groupId>org.freemarker</groupId>
          <artifactId>freemarker</artifactId>
          <version>2.3.14</version>
    </dependency> 

默认范围是编译

【讨论】:

以上是关于Freemarker 配置问题(Maven 编译失败)的主要内容,如果未能解决你的问题,请参考以下文章

maven中使用freemarker,如何配置需要哪些配置文件

如何配置 Maven Freemarker 以识别 `@include_page` 标签?

Freemarker 模板引擎和 Maven

如何在 FreeMarker 和 maven 或 ant(不是 servlet)中使用 auto_import 功能

SiteMesh3整合SpringMVC+FreeMarker

spring boot入门(web+freemarker)