【问题标题】:Use fmpp command line parameter in template在模板中使用 fmpp 命令行参数
【发布时间】:2018-05-02 15:59:56
【问题描述】:

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

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

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

我可能有的一些选择是:

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

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

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

环境设置:

  • fmpp v0.9.14
  • freemarker v2.3.19

【问题讨论】:

  • -D myserver:serverA
  • 但它正在模板中寻找它! : 找不到源文件或目录:C:\glassfish3\glassfish\domains\OPP\temp\C- fgTplt1525284376510_0\isoserverTemplates\ -D myserver:serverA
  • 它甚至不认为 -D 是一个标志
  • 消息中的路径也不是-C指定的数据路径,而是-S路径

标签: freemarker fmpp


【解决方案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 命令行参数可用于在解析模板时显示任何错误。

【讨论】:

  • 这不正是我说的我试过了吗???它给出了上述错误:找不到源文件或目录:C:\glassfish3\glassfish\domains\OPP\temp\C- fgTplt1525284376510_0\isoserverTemplates\ -D myserver:serverA
  • -D 不是一个新选项,但 FMPP 并没有抱怨它也无法识别它。似乎显示为“源文件或目录”的整个内容作为单个大命令行参数传递给 FMPP。你究竟是如何调用它的?
  • int exitCode = CommandLine.execute(new String[] {"-C", isoserverTemplatesDataPath + "config.fmpp", "-S", isoserverTemplatesPath, "--data-root", isoserverTemplatesDataPath, “-O”,isoserverFilledTemplatesPath},空,空); // 使用 FMPP 处理模板
  • 对我来说看起来不错,虽然这里没有 -D。那是怎么回事? (顺便说一句,虽然CommandLine.execute 肯定可以工作,但请注意,使用Settings API 设置和启动 FMPP 作业可能会更好。请参阅:fmpp.sourceforge.net/writefrontend.html
猜你喜欢
  • 2014-08-03
  • 2013-04-01
  • 2016-01-07
  • 2011-01-29
  • 2018-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-17
相关资源
最近更新 更多