我开始使用FMPP Maven plugin使用Freemarker来组装简单的HTML页面。到目前为止,一切都很好。
但是我需要做的一件事是在页面上包含系统属性(Maven提供的系统属性之一)的值。有没有办法从Freemarker模板访问系统属性?
(如果没有,我可能只需要破解插件以允许从Maven传递值)

最佳答案

FMPP有一个setting called data ,它指定所有模板将看到的变量,因此应在其中放置系统属性。要将值放入其中,除非可以将值指定为简单文字,否则需要一个所谓的数据加载器。因此,在这种情况下,您需要一个数据加载器,该数据加载器以java.util.Properties对象的形式返回系统属性。虽然没有专门用于此的数据加载器,但是您可以使用eval数据加载器(在config.fmpp中):

data: {
   ...
   sysProps: eval('System.getProperties()')
   ...
}

现在,您可以在模板中访问sysProps["os.name"]之类的系统属性。

或者,您可以编写自定义FMPP数据加载器。参见http://fmpp.sourceforge.net/dataloader.html#sect19

09-03 19:16