在模板中使用fmpp命令行参数

时间:2018-05-02 15:59:56

标签: freemarker fmpp

我有一些使用FMPP生成的配置模板 基于csv和属性中的信息的真实运行时配置文件 file(在config.fmpp中定义)。

我希望能够使用同一组模板和config.fmpp信息为同一任务配置第二个群集服务器。但是,生成的运行时配置中需要稍有不同,如果我使用标准的fmpp变量知道我所在的服务器实例(" serverA"或" serverB"),我可以这样做比如${myserver}

但是必须只有一组模板和FMPP配置文件,所以我需要以某种方式获得" myserver"的价值。从运行时 每个服务器的环境。

我可能有的一些选择是:

  • 在命令行工具调用中传递myserver的值(最佳方式);或
  • 从环境变量中获取它。

有没有人有一个代码示例来执行这些以及最佳方法的任何建议?在线参考会很棒。

fmpp -S /home/me/sample-project/src -Param myserver:serverA

环境设置:

  • fmpp v0.9.14
  • freemarker v2.3.19

1 个答案:

答案 0 :(得分:1)

使用-D命令行选项(请参阅--help):

-D, --data=<TDD>  Creates shared data that all templates will see. <TDD> is the
                  Textual Data Definition, e.g.:
                  -D "properties(style.properties), onLine:true"
                  Note that paths like "style.properties" are relative to the
                  data root directory.

像:

fmpp -S /home/me/sample-project/src -D myserver:serverA

请注意-D后面有空格。 (它不像java命令行语法,而是像标准的GNU命令行语法。

  

-D与Java的-D选项无关。

documentation显示onLine:true,但此类布尔值是旧版,不再接受。使用online:yes来解析布尔值。

例如:

fmpp \
  -S /path/ \
  --verbose \
  -D "online:yes"

然后,在模板中:

<p>
  online: ${online}
</p>

将导致:

online: yes

--verbose命令行参数可用于在解析模板时显示任何错误。