CLI Configuration

The Apache FreeMarker CLI configuration can be tweaked to

  • Change the underlying Apache FreeMarker Configuration
  • Instantiate custom tools
  • Storing user-specific templates

Apache FreeMarker CLI Properties File

Apache FreeMarker CLI reads the conf/freemarker-cli.properties

#############################################################################
# General FreeMarker Configuration
# See https://freemarker.apache.org/docs/api/freemarker/template/Configuration.html#setSetting-java.lang.String-java.lang.String-
#############################################################################
# freemarker.configuration.setting.locale=JVM default

#############################################################################
# Configure FreeMarker Tools (name -> implementation class)
#############################################################################
freemarker.tools.CSVTool=org.apache.freemarker.generator.tools.commonscsv.CommonsCSVTool
freemarker.tools.DataFrameTool=org.apache.freemarker.generator.tools.dataframe.DataFrameTool
freemarker.tools.ExcelTool=org.apache.freemarker.generator.tools.excel.ExcelTool
freemarker.tools.ExecTool=org.apache.freemarker.generator.tools.commonsexec.CommonsExecTool
freemarker.tools.FreeMarkerTool=org.apache.freemarker.generator.tools.freemarker.FreeMarkerTool
freemarker.tools.GrokTool=org.apache.freemarker.generator.tools.grok.GrokTool
freemarker.tools.GsonTool=org.apache.freemarker.generator.tools.gson.GsonTool
freemarker.tools.JsonPathTool=org.apache.freemarker.generator.tools.jsonpath.JsonPathTool
freemarker.tools.JsoupTool=org.apache.freemarker.generator.tools.jsoup.JsoupTool
freemarker.tools.PropertiesTool=org.apache.freemarker.generator.tools.properties.PropertiesTool
freemarker.tools.SystemTool=org.apache.freemarker.generator.tools.system.SystemTool
freemarker.tools.UUIDTool=org.apache.freemarker.generator.tools.uuid.UUIDTool
freemarker.tools.XmlTool=org.apache.freemarker.generator.tools.xml.XmlTool
freemarker.tools.YamlTool=org.apache.freemarker.generator.tools.snakeyaml.SnakeYamlTool

Changing this file allows to tweak the underlying Apache FreeMarker Configuration and add custom tools.

Storing User-Specific Templates

Over the time you will accumulate more and more Apache FreeMarker templates - some of them are stored within a project but some of the more general might be free-floating and you don’t want to store them in the installation directory.

To give those free-floating templates a home Apache FreeMarker CLI tries to read templates from ~/freemarker-cli, e.g.

tree ~/.freemarker-cli/
/Users/sgoeschl/.freemarker-cli/
`-- templates
    `-- json
        |-- confluence
        |   |-- aws
        |   |   `-- describe.ftl
        |-- csv
        |   `-- swagger-endpoints.ftl
        |-- ftl
        |   `-- customer-user-products.ftl
        |-- html
        |   `-- customer-user-products.ftl
        `-- md
            `-- customer-user-products.ftl

If a ~/freemarker-cli is found it will be automatically added to the FreeMarker Template Loader (for more information see https://freemarker.apache.org/docs/pgui_config_templateloading.html)

You can easily check this, e.g.

> freemarker-cli -t templates/info.ftl

FreeMarker CLI Template Loader Directories
------------------------------------------------------------------------------
[#1] /Users/sgoeschl
[#2] /Users/sgoeschl/.freemarker-cli
[#3] /Applications/Java/freemarker-cli-2.0.0