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

Freemarker 在模板中使用fmpp命令行参数,freemarker,fmpp,Freemarker,Fmpp,我有一些配置模板,它们使用FMPP生成 基于csv中的信息和属性的实时运行时配置文件 文件(在config.fmpp中定义) 我希望能够使用同一组模板和config.fmpp信息为同一任务配置第二个群集服务器。但是,在生成的运行时配置中需要有一些细微的差异,如果我知道我在哪个服务器实例(“serverA”或“serverB”)上,我可以使用标准的fmpp变量,如${myserver} 但是必须只有一组模板和FMPP配置文件,所以我需要从运行时获取“myserver”的值 每个服务器中的环境 我可

我有一些配置模板,它们使用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

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

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

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

显示的是
联机:true
,但此类布尔值是传统值,不再被接受。请使用
联机:yes
解析布尔值

例如:

fmpp \
  -S /path/ \
  --verbose \
  -D "online:yes"
然后,在模板中:

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

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

-D myserver:serverab它正在模板中查找它!:未找到源文件或目录:C:\glassfish3\glassfish\domains\OPP\temp\C-fgtplt15284376510\u 0\isoserverTemplates \-D myserver:serverAIt似乎无法识别ze-D作为标记消息中的路径也不是用-C指定的数据路径,而是-S路径。这不正是我所说的我尝试过的吗?它给出了上述错误:未找到源文件或目录:C:\glassfish3\glassfish\domains\OPP\temp\C-fgtplt15284376510\u 0\isoserverTemplates \-D myserver:serverA
-D
不是新选项,但FMPP也没有抱怨它不识别它。似乎显示为“源文件或目录”的整个内容都作为一个大的命令行参数传递给了FMPP。您究竟如何调用它?int exitCode=CommandLine.execute(新字符串[]{“-C”,isoserverTemplatesDataPath+“config.FMPP”,“S”,isoserverTemplatesPath,“--data root”,isoserverTemplatesDataPath,“-O”,isoserverFilledTemplatesPath},null,null);//用fmpps处理模板对我来说很好,不过这里面没有
-D
。这是怎么回事?(顺便说一句,虽然
CommandLine.execute
肯定会起作用,但请注意,使用
设置
API设置和启动FMPP作业可能更好。请参阅:)
fmpp \
  -S /path/ \
  --verbose \
  -D "online:yes"
<p>
  online: ${online}
</p>
online: yes