2011-06-18 39 views
3

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

回答

2

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

+0

是的,这是一种魅力。 – StaxMan