0

我有一些配置模板,它们使用 FMPP 根据 csv 和属性文件(在 config.fmpp 中定义)中的信息生成真正的运行时配置文件。

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

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

我可能有的一些选择是:

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

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

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

环境设置:

  • fmpp v0.9.14
  • freemarker v2.3.19
4

1 回答 1

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 命令行语法。

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

文档显示,但这样的onLine:true布尔值是遗留的,不再被接受。用于online:yes解析布尔值。

例如:

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

然后,在模板中:

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

将导致:

online: yes

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

于 2018-05-03T11:20:04.947 回答