在.jar中加载自由标记模板文件夹

2022-09-02 03:29:32

我在应用程序中使用自由标记模板

在将应用程序部署到 jar 文件之前,为了加载模板,我需要做的就是:cfg.setDirectoryForTemplateLoading(new File("templates"));

它从我在项目中创建的模板文件夹中加载了所有模板。

现在,在移动到maven并将我的应用程序部署到可执行jar之后。应用程序无法再找到此文件夹(我已经在.jar文件中进行了检查,并且“模板”文件夹直接部署在根目录中)

我已经尝试了我所知道的一切,但没有运气。

我现在应该如何加载所有模板?(我假设如果我把文件夹放在.jar文件之外,但在同一目录中,它会起作用。但这不是我想要的。

谢谢。


答案 1

看看

void setClassForTemplateLoading(Class cl, String prefix);

...在 FreeMarker 手册中关于模板加载的章节中。

例:

cfg.setClassForTemplateLoading(this.getClass(), "/templates");

...如果您的模板位于相对于当前类的根的包中。templates


答案 2
Configuration cfg;
private Template template;  
    {
        cfg=new Configuration(); 
        try {
            cfg.setClassForTemplateLoading(this.getClass(), "/templates");
            template = cfg.getTemplate("template.ftl");
}

这对我来说非常有效。在这里,我的模板文件夹包含模板.ftl,它位于src/main/resources包下。


推荐