You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@freemarker.apache.org by sg...@apache.org on 2020/08/10 13:39:23 UTC

[freemarker-generator] branch FREEMARKER-153 updated: FREEMARKER-153 Use "./templates" as template root directory instead of "."

This is an automated email from the ASF dual-hosted git repository.

sgoeschl pushed a commit to branch FREEMARKER-153
in repository https://gitbox.apache.org/repos/asf/freemarker-generator.git


The following commit(s) were added to refs/heads/FREEMARKER-153 by this push:
     new baf44ed  FREEMARKER-153 Use "./templates" as template root directory instead of "."
baf44ed is described below

commit baf44ed6e60b5bb32bd61a6a3fd2491cc49eff16
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Mon Aug 10 15:36:28 2020 +0200

    FREEMARKER-153 Use "./templates" as template root directory instead of "."
---
 freemarker-generator-cli/pom.xml                   |  6 ++--
 .../freemarker/generator/cli/config/Suppliers.java |  4 +--
 .../cli/config/TemplateDirectorySupplier.java      | 34 +++++++++++-----------
 .../src/{main => }/scripts/run-examples.bat        | 20 ++++++-------
 .../src/{main => }/scripts/run-examples.sh         | 20 ++++++-------
 .../markdown/cli/advanced/cli-configuration.md     |  2 +-
 .../src/site/markdown/cli/concepts/data-sources.md | 12 ++++----
 .../src/site/markdown/cli/concepts/named-uris.md   |  8 ++---
 .../src/site/markdown/cli/concepts/passing-data.md |  8 ++---
 .../site/markdown/cli/concepts/template-loading.md |  6 ++--
 .../site/markdown/cli/concepts/transformation.md   |  6 ++--
 .../markdown/cli/introduction/getting-started.md   |  2 +-
 .../site/markdown/cli/usage/running-examples.md    | 16 +++++-----
 .../site/markdown/cli/usage/transforming-csv.md    |  6 ++--
 .../{ => src}/templates/cat.ftl                    |  0
 .../{ => src}/templates/csv/csv/transform.ftl      |  2 +-
 .../{ => src}/templates/csv/html/transform.ftl     |  2 +-
 .../{ => src}/templates/csv/md/transform.ftl       |  2 +-
 .../{ => src}/templates/excel/csv/transform.ftl    |  2 +-
 .../{ => src}/templates/excel/html/transform.ftl   |  0
 .../{ => src}/templates/excel/md/transform.ftl     |  0
 .../{ => src}/templates/info.ftl                   |  0
 .../{ => src}/templates/json/yaml/transform.ftl    |  0
 .../{ => src}/templates/lib/commons-csv.ftl        |  0
 .../{ => src}/templates/yaml/json/transform.ftl    |  0
 .../freemarker/generator/cli/AbstractMainTest.java | 10 ++++++-
 .../freemarker/generator/cli/ExamplesTest.java     | 28 +++++++++---------
 .../generator/cli/TemplateLoadingTest.java         |  2 +-
 .../cli/config/TemplateDirectorySupplierTest.java  | 13 ++-------
 29 files changed, 106 insertions(+), 105 deletions(-)

diff --git a/freemarker-generator-cli/pom.xml b/freemarker-generator-cli/pom.xml
index 688755e..34137ba 100644
--- a/freemarker-generator-cli/pom.xml
+++ b/freemarker-generator-cli/pom.xml
@@ -75,10 +75,10 @@
                                 <copy file="README.md" todir="./target/appassembler" />
                                 <copy file="LICENSE" todir="./target/appassembler" />
                                 <copy file="NOTICE" todir="./target/appassembler" />
-                                <copy file="./src/main/scripts/run-examples.bat" todir="./target/appassembler" />
-                                <copy file="./src/main/scripts/run-examples.sh" todir="./target/appassembler" />
+                                <copy file="./src/scripts/run-examples.bat" todir="./target/appassembler" />
+                                <copy file="./src/scripts/run-examples.sh" todir="./target/appassembler" />
                                 <copy todir="./target/appassembler/templates">
-                                    <fileset dir="templates" />
+                                    <fileset dir="src/templates" />
                                 </copy>
                                 <copy todir="./target/appassembler/examples">
                                     <fileset dir="src/examples" />
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
index 251079f..b6e6fd0 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/Suppliers.java
@@ -41,8 +41,8 @@ public class Suppliers {
         return new ConfigurationSupplier(settings, templateLoader);
     }
 
-    public static TemplateDirectorySupplier templateDirectorySupplier(String userDefinedTemplateDir) {
-        return new TemplateDirectorySupplier(userDefinedTemplateDir);
+    public static TemplateDirectorySupplier templateDirectorySupplier(String additionalTemplateDirName) {
+        return new TemplateDirectorySupplier(additionalTemplateDirName);
     }
 
     public static TemplateLoaderSupplier templateLoaderSupplier(Settings settings) {
diff --git a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplier.java b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplier.java
index fab66c9..8e644a9 100644
--- a/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplier.java
+++ b/freemarker-generator-cli/src/main/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplier.java
@@ -41,20 +41,17 @@ public class TemplateDirectorySupplier implements Supplier<List<File>> {
     /** Installation directory of "freemarker-generator" when invoked with shell wrapper */
     private static final String APP_HOME = "app.home";
 
-    /** Current working directory when invoked with shell wrapper */
-    private static final String USER_DIR = "user.dir";
-
     /** Home directory of the user */
     private static final String USER_HOME = "user.home";
 
     /** The user's optional "freemarker-generator" directory */
     private static final String USER_CONFIGURATION_DIR_NAME = ".freemarker-generator";
 
-    /** User-defined template directory */
-    private final String userDefinedTemplateDir;
+    /** Additional template directory, e.g. provided as command line parameter */
+    private final String additionalTemplateDirName;
 
-    public TemplateDirectorySupplier(String userDefinedTemplateDir) {
-        this.userDefinedTemplateDir = userDefinedTemplateDir;
+    public TemplateDirectorySupplier(String additionalTemplateDirName) {
+        this.additionalTemplateDirName = additionalTemplateDirName;
     }
 
     @Override
@@ -70,28 +67,31 @@ public class TemplateDirectorySupplier implements Supplier<List<File>> {
 
     private List<String> templateLoaderDirectories() {
         return new ArrayList<>(asList(
-                userTemplateDirName(),
-                currentWorkingDirName(),
-                userConfigDirName(),
-                applicationDirName()
+                additionalTemplatesDirectory(),
+                userConfigTemplatesDirectory(),
+                applicationTemplatesDirectory()
         ));
     }
 
-    private String userTemplateDirName() {
-        return userDefinedTemplateDir != null ? new File(userDefinedTemplateDir).getAbsolutePath() : null;
+    private String additionalTemplatesDirectory() {
+        return additionalTemplateDirName != null ? new File(additionalTemplateDirName).getAbsolutePath() : null;
     }
 
-    private String userConfigDirName() {
+    private String userConfigDirectory() {
         final String userHomeDir = System.getProperty(USER_HOME);
         return new File(userHomeDir, USER_CONFIGURATION_DIR_NAME).getAbsolutePath();
     }
 
-    private static String applicationDirName() {
+    private String userConfigTemplatesDirectory() {
+        return userConfigDirectory() + "/templates";
+    }
+
+    private static String applicationDirectory() {
         return System.getProperty(APP_HOME);
     }
 
-    private static String currentWorkingDirName() {
-        return System.getProperty(USER_DIR);
+    private static String applicationTemplatesDirectory() {
+        return applicationDirectory() + "/templates";
     }
 
     private static boolean isDirectory(File directory) {
diff --git a/freemarker-generator-cli/src/main/scripts/run-examples.bat b/freemarker-generator-cli/src/scripts/run-examples.bat
similarity index 87%
rename from freemarker-generator-cli/src/main/scripts/run-examples.bat
rename to freemarker-generator-cli/src/scripts/run-examples.bat
index b550b54..8671da0 100644
--- a/freemarker-generator-cli/src/main/scripts/run-examples.bat
+++ b/freemarker-generator-cli/src/scripts/run-examples.bat
@@ -28,7 +28,7 @@ REM Info
 REM =========================================================================
 
 echo "templates\info.ftl"
-%FREEMARKER_CMD% -t templates\info.ftl README.md > target\out\info.txt
+%FREEMARKER_CMD% -t info.ftl README.md > target\out\info.txt
 
 REM =========================================================================
 REM Demo
@@ -53,10 +53,10 @@ REM CSV
 REM =========================================================================
 
 echo "templates\csv\html\transform.ftl"
-%FREEMARKER_CMD% -t templates\csv\html\transform.ftl examples\data\csv\contract.csv > target\out\contract.html
+%FREEMARKER_CMD% -t csv\html\transform.ftl examples\data\csv\contract.csv > target\out\contract.html
 
 echo "templates\csv\md\transform.ftl"
-%FREEMARKER_CMD% -t templates\csv\md\transform.ftl examples\data\csv\contract.csv > target\out\contract.md
+%FREEMARKER_CMD% -t csv\md\transform.ftl examples\data\csv\contract.csv > target\out\contract.md
 
 echo "examples\templates\csv\shell\curl.ftl"
 %FREEMARKER_CMD% -t .\examples\templates\csv\shell\curl.ftl examples\data\csv\user.csv > target\out\curl.sh
@@ -103,15 +103,15 @@ echo "examples\templates\excel\dataframe\transform.ftl"
 %FREEMARKER_CMD% -t examples\templates\excel\dataframe\transform.ftl examples\data\excel\test.xls > target\out\test.xls.dataframe.txt
 
 echo "templates\excel\html\transform.ftl"
-%FREEMARKER_CMD% -t templates\excel\html\transform.ftl examples\data\excel\test.xls > target\out\test.xls.html
-%FREEMARKER_CMD% -t templates\excel\html\transform.ftl examples\data\excel\test.xlsx > target\out\test.xslx.html
-%FREEMARKER_CMD% -t templates\excel\html\transform.ftl examples\data\excel\test-multiple-sheets.xlsx > target\out\test-multiple-sheets.xlsx.html
+%FREEMARKER_CMD% -t excel\html\transform.ftl examples\data\excel\test.xls > target\out\test.xls.html
+%FREEMARKER_CMD% -t excel\html\transform.ftl examples\data\excel\test.xlsx > target\out\test.xslx.html
+%FREEMARKER_CMD% -t excel\html\transform.ftl examples\data\excel\test-multiple-sheets.xlsx > target\out\test-multiple-sheets.xlsx.html
 
 echo "templates\excel\md\transform.ftl"
-%FREEMARKER_CMD% -t templates\excel\md\transform.ftl examples\data\excel\test-multiple-sheets.xlsx > target\out\test-multiple-sheets.xlsx.md
+%FREEMARKER_CMD% -t excel\md\transform.ftl examples\data\excel\test-multiple-sheets.xlsx > target\out\test-multiple-sheets.xlsx.md
 
 echo "templates\excel\csv\transform.ftl"
-%FREEMARKER_CMD% -t templates\excel\csv\transform.ftl examples\data\excel\test-multiple-sheets.xlsx > target\out\test-multiple-sheets.xlsx.csv
+%FREEMARKER_CMD% -t excel\csv\transform.ftl examples\data\excel\test-multiple-sheets.xlsx > target\out\test-multiple-sheets.xlsx.csv
 
 echo "examples\templates\excel\csv\custom.ftl"
 %FREEMARKER_CMD% -t examples\templates\excel\csv\custom.ftl -Pcsv.format=MYSQL examples\data\excel\test.xls > target\out\test-transform-xls.csv
@@ -134,7 +134,7 @@ echo "examples\templates\json\csv\swagger-endpoints.ftl"
 %FREEMARKER_CMD% -t examples\templates\json\csv\swagger-endpoints.ftl examples\data\json\swagger-spec.json > target\out\swagger-spec.csv
 
 echo "templates\json\yaml\transform.ftl"
-%FREEMARKER_CMD% -t templates\json\yaml\transform.ftl examples\data\json\swagger-spec.json > target\out\swagger-spec.yaml
+%FREEMARKER_CMD% -t json\yaml\transform.ftl examples\data\json\swagger-spec.json > target\out\swagger-spec.yaml
 
 echo "examples\templates\json\md\github-users.ftl"
 %FREEMARKER_CMD% -t examples\templates\json\md\github-users.ftl examples\data\json\github-users.json > target\out\github-users.md
@@ -161,7 +161,7 @@ echo "examples\templates\yaml\txt\transform.ftl"
 %FREEMARKER_CMD% -t examples\templates\yaml\txt\transform.ftl examples\data\yaml\customer.yaml > target\out\customer.txt
 
 echo "templates\yaml\json\transform.ftl"
-%FREEMARKER_CMD% -t templates\yaml\json\transform.ftl examples\data\yaml\swagger-spec.yaml > target\out\swagger-spec.json
+%FREEMARKER_CMD% -t yaml\json\transform.ftl examples\data\yaml\swagger-spec.yaml > target\out\swagger-spec.json
 
 REM =========================================================================
 REM XML
diff --git a/freemarker-generator-cli/src/main/scripts/run-examples.sh b/freemarker-generator-cli/src/scripts/run-examples.sh
similarity index 85%
rename from freemarker-generator-cli/src/main/scripts/run-examples.sh
rename to freemarker-generator-cli/src/scripts/run-examples.sh
index a740da5..8bcb70b 100755
--- a/freemarker-generator-cli/src/main/scripts/run-examples.sh
+++ b/freemarker-generator-cli/src/scripts/run-examples.sh
@@ -33,7 +33,7 @@ FREEMARKER_CMD=./bin/freemarker-generator
 #############################################################################
 
 echo "templates/info.ftl"
-$FREEMARKER_CMD -t templates/info.ftl README.md > target/out/info.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t info.ftl README.md > target/out/info.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 #############################################################################
 # Demo
@@ -58,10 +58,10 @@ $FREEMARKER_CMD -i '${tools.dataframe.print(tools.dataframe.fromMaps(tools.gson.
 #############################################################################
 
 echo "templates/csv/html/transform.ftl"
-$FREEMARKER_CMD -t templates/csv/html/transform.ftl examples/data/csv/contract.csv > target/out/contract.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t csv/html/transform.ftl examples/data/csv/contract.csv > target/out/contract.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 echo "templates/csv/md/transform.ftl"
-$FREEMARKER_CMD -t templates/csv/md/transform.ftl examples/data/csv/contract.csv > target/out/contract.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t csv/md/transform.ftl examples/data/csv/contract.csv > target/out/contract.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 echo "examples/templates/csv/shell/curl.ftl"
 $FREEMARKER_CMD -t ./examples/templates/csv/shell/curl.ftl examples/data/csv/user.csv > target/out/curl.sh || { echo >&2 "Test failed.  Aborting."; exit 1; }
@@ -123,15 +123,15 @@ echo "examples/templates/excel/dataframe/transform.ftl"
 $FREEMARKER_CMD -t examples/templates/excel/dataframe/transform.ftl examples/data/excel/test.xls > target/out/test.xls.dataframe.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 echo "templates/excel/html/transform.ftl"
-$FREEMARKER_CMD -t templates/excel/html/transform.ftl examples/data/excel/test.xls > target/out/test.xls.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
-$FREEMARKER_CMD -t templates/excel/html/transform.ftl examples/data/excel/test.xlsx > target/out/test.xslx.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
-$FREEMARKER_CMD -t templates/excel/html/transform.ftl examples/data/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t excel/html/transform.ftl examples/data/excel/test.xls > target/out/test.xls.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t excel/html/transform.ftl examples/data/excel/test.xlsx > target/out/test.xslx.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t excel/html/transform.ftl examples/data/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.html || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 echo "templates/excel/md/transform.ftl"
-$FREEMARKER_CMD -t templates/excel/md/transform.ftl examples/data/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t excel/md/transform.ftl examples/data/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 echo "templates/excel/csv/transform.ftl"
-$FREEMARKER_CMD -t templates/excel/csv/transform.ftl examples/data/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t excel/csv/transform.ftl examples/data/excel/test-multiple-sheets.xlsx > target/out/test-multiple-sheets.xlsx.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 echo "examples/templates/excel/csv/custom.ftl"
 $FREEMARKER_CMD -t examples/templates/excel/csv/custom.ftl -Pcsv.format=MYSQL examples/data/excel/test.xls > target/out/test-transform-xls.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
@@ -154,7 +154,7 @@ echo "examples/templates/json/csv/swagger-endpoints.ftl"
 $FREEMARKER_CMD -t examples/templates/json/csv/swagger-endpoints.ftl examples/data/json/swagger-spec.json > target/out/swagger-spec.csv || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 echo "templates/json/yaml/transform.ftl"
-$FREEMARKER_CMD -t templates/json/yaml/transform.ftl examples/data/json/swagger-spec.json > target/out/swagger-spec.yaml || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t json/yaml/transform.ftl examples/data/json/swagger-spec.json > target/out/swagger-spec.yaml || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 echo "examples/templates/json/md/github-users.ftl"
 $FREEMARKER_CMD -t examples/templates/json/md/github-users.ftl examples/data/json/github-users.json > target/out/github-users.md || { echo >&2 "Test failed.  Aborting."; exit 1; }
@@ -181,7 +181,7 @@ echo "examples/templates/yaml/txt/transform.ftl"
 $FREEMARKER_CMD -t examples/templates/yaml/txt/transform.ftl examples/data/yaml/customer.yaml > target/out/customer.txt || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 echo "templates/yaml/json/transform.ftl"
-$FREEMARKER_CMD -t templates/yaml/json/transform.ftl examples/data/yaml/swagger-spec.yaml > target/out/swagger-spec.json || { echo >&2 "Test failed.  Aborting."; exit 1; }
+$FREEMARKER_CMD -t yaml/json/transform.ftl examples/data/yaml/swagger-spec.yaml > target/out/swagger-spec.json || { echo >&2 "Test failed.  Aborting."; exit 1; }
 
 #############################################################################
 # XML
diff --git a/freemarker-generator-cli/src/site/markdown/cli/advanced/cli-configuration.md b/freemarker-generator-cli/src/site/markdown/cli/advanced/cli-configuration.md
index 2027743..8e8743e 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/advanced/cli-configuration.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/advanced/cli-configuration.md
@@ -67,7 +67,7 @@ If a  `~/freemarker-generator` is found it will be automatically added to the `F
 You can easily check this, e.g.  
 
 ```
-> freemarker-generator -t templates/info.ftl
+> freemarker-generator -t info.ftl
 
 FreeMarker Generator Template Loader Directories
 ------------------------------------------------------------------------------
diff --git a/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md b/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md
index 9d1a4bd..9e3228f 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/data-sources.md
@@ -13,7 +13,7 @@ A `DataSource` consists of lazy-loaded data available in Apache FreeMarker's mod
 A `DataSource` can be loaded from the file system, e.g. as positional command line argument
 
 ```
-freemarker-cli -t templates/info.ftl README.md
+freemarker-cli -t info.ftl README.md
 
 FreeMarker Generator DataSources
 ------------------------------------------------------------------------------
@@ -24,7 +24,7 @@ FreeMarker Generator DataSources
 from an URL
 
 ```
-freemarker-cli --data-source xkcd=https://xkcd.com/info.0.json -t templates/info.ftl
+freemarker-cli --data-source xkcd=https://xkcd.com/info.0.json -t info.ftl
 
 FreeMarker Generator DataSources
 ------------------------------------------------------------------------------
@@ -36,7 +36,7 @@ or from an environment variable, e.g. `NGINX_CONF` having a JSON payload
 
 ```
 export NGINX_CONF='{"NGINX_PORT":"8443","NGINX_HOSTNAME":"localhost"}'
-freemarker-cli -t templates/info.ftl -s conf=env:///NGINX_CONF#mimeType=application/json
+freemarker-cli -t info.ftl -s conf=env:///NGINX_CONF#mimeType=application/json
 
 FreeMarker Generator DataSources
 ------------------------------------------------------------------------------
@@ -47,7 +47,7 @@ FreeMarker Generator DataSources
 Of course you can load multiple `DataSources` directly
 
 ```
-freemarker-cli -t templates/info.ftl README.md xkcd=https://xkcd.com/info.0.json
+freemarker-cli -t info.ftl README.md xkcd=https://xkcd.com/info.0.json
  
 FreeMarker Generator DataSources
 ------------------------------------------------------------------------------
@@ -60,7 +60,7 @@ FreeMarker Generator DataSources
 or load them from a directory
 
 ```
-freemarker-cli -t templates/info.ftl -s examples/data
+freemarker-cli -t info.ftl -s examples/data
 FreeMarker Generator DataSources
 ------------------------------------------------------------------------------
     [#1], name=combined-access.log, group=default, contentType=text/plain, charset=UTF-8, length=2,068 Bytes
@@ -74,7 +74,7 @@ FreeMarker Generator DataSources
 which can be combined with `include` and `exclude` filters
 
 ```
-freemarker-cli -t templates/info.ftl -s examples/data --data-source-include=*.json
+freemarker-cli -t info.ftl -s examples/data --data-source-include=*.json
 
 FreeMarker Generator DataSources
 ------------------------------------------------------------------------------
diff --git a/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md b/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md
index 0e833d1..1eda49f 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/named-uris.md
@@ -29,7 +29,7 @@ For our purposes, the scheme and the path components are especially important, t
 The following Named URI loads a "user.csv" and the data source is available as `my_users` 
 
 ```
-freemarker-cli -t templates/info.ftl my_users=examples/data/csv/user.csv
+freemarker-cli -t info.ftl my_users=examples/data/csv/user.csv
 [#1], name=my_users, group=default, contentType=text/csv, charset=UTF-8, length=376 Bytes
 URI : file:examples/data/csv/user.csv
 ```
@@ -37,7 +37,7 @@ URI : file:examples/data/csv/user.csv
 A Named URI allows to pass additional information as part of the fragment, e.g. the charset of the text file 
 
 ```
-freemarker-cli -t templates/info.ftl my_users=examples/data/csv/user.csv#charset=UTF-16
+freemarker-cli -t info.ftl my_users=examples/data/csv/user.csv#charset=UTF-16
 [#1], name=my_users, group=default, contentType=text/csv, charset=UTF-16, length=376 Bytes
 URI : file:examples/data/csv/user.csv
 ```
@@ -45,7 +45,7 @@ URI : file:examples/data/csv/user.csv
 In addition to the simplified file syntax full URIs can be used
 
 ```
-freemarker-cli -t templates/info.ftl http://google.com?foo=bar
+freemarker-cli -t info.ftl http://google.com?foo=bar
 [#1], name=google.com, group=default, contentType=text/html, charset=ISO-8859-1, length=-1 Bytes
 URI : http://google.com?foo=bar
 ```
@@ -53,7 +53,7 @@ URI : http://google.com?foo=bar
 and also combined with a name
 
 ```
-freemarker-cli -t templates/info.ftl page=http://google.com?foo=bar
+freemarker-cli -t info.ftl page=http://google.com?foo=bar
 [#1], name=page, group=default, contentType=text/html, charset=ISO-8859-1, length=-1 Bytes
 URI : http://google.com?foo=bar
 ```
diff --git a/freemarker-generator-cli/src/site/markdown/cli/concepts/passing-data.md b/freemarker-generator-cli/src/site/markdown/cli/concepts/passing-data.md
index 5fdd4e2..4ff77de 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/concepts/passing-data.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/passing-data.md
@@ -10,7 +10,7 @@
 User-supplied system properties are added to the JVM's system properties
 
 ```
-> freemarker-generator -Dfoo1=foo1 -D foo2=foo2 -t templates/info.ftl 
+> freemarker-generator -Dfoo1=foo1 -D foo2=foo2 -t info.ftl 
 ```
  
 ### User-Supplied Parameters
@@ -23,7 +23,7 @@ User-supplied parameters allow to pass additional information to an Apache FreeM
 Pass a simple name/value pair on the command line 
 
 ```
-> freemarker-generator -t templates/info.ftl -P key=value
+> freemarker-generator -t info.ftl -P key=value
 
 User Supplied Parameters
 ------------------------------------------------------------------------------
@@ -33,7 +33,7 @@ User Supplied Parameters
 By providing a `group` you can create nested maps
 
 ```
-> freemarker-generator -t templates/info.ftl -P foo1:group=bar1 -P foo2:group=bar2
+> freemarker-generator -t info.ftl -P foo1:group=bar1 -P foo2:group=bar2
 
 User Supplied Parameters
 ------------------------------------------------------------------------------
@@ -43,7 +43,7 @@ User Supplied Parameters
 It is also possible to mix and match the two approaches
 
 ```
-> freemarker-generator -t templates/info.ftl -P foo1:group=bar1 -P foo2:group=bar2 -P key=value
+> freemarker-generator -t info.ftl -P foo1:group=bar1 -P foo2:group=bar2 -P key=value
 
 User Supplied Parameters
 ------------------------------------------------------------------------------
diff --git a/freemarker-generator-cli/src/site/markdown/cli/concepts/template-loading.md b/freemarker-generator-cli/src/site/markdown/cli/concepts/template-loading.md
index 1c4d0cb..f05dbd5 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/concepts/template-loading.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/template-loading.md
@@ -17,7 +17,7 @@ In order the render a template it needs to be loaded first - there are multiple
 You can check the currently used template loader directories easily on the command line, e.g.
 
 ```
-freemarker-generator -t templates/info.ftl
+freemarker-generator -t info.ftl
 
 FreeMarker Generator Template Loader Directories
 ------------------------------------------------------------------------------
@@ -29,13 +29,13 @@ FreeMarker Generator Template Loader Directories
 The main benefit of `MultiTemplateLoader` is the use of abstract template paths finding a template in the template loader directories
 
 ```
-freemarker-generator -t templates/info.ftl
+freemarker-generator -t info.ftl
 ``` 
 
 and [Template Includes](https://freemarker.apache.org/docs/ref_directive_include.html)
 
 ```
-<#import "/templates/lib/commons-csv.ftl" as csv />
+<#import "/lib/commons-csv.ftl" as csv />
 ```  
 
 ### Free-Style Template Loading
diff --git a/freemarker-generator-cli/src/site/markdown/cli/concepts/transformation.md b/freemarker-generator-cli/src/site/markdown/cli/concepts/transformation.md
index 779c269..fe9b7f0 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/concepts/transformation.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/concepts/transformation.md
@@ -19,7 +19,7 @@ Transforming a single template to a single output file
 
 ```
 freemarker-generator \
--t templates/csv/md/transform.ftl examples/data/csv/contract.csv \
+-t csv/md/transform.ftl examples/data/csv/contract.csv \
 -o target/contract.md
 ```
 
@@ -27,8 +27,8 @@ Transforming multiple templates to multiple output files (1:1 mapping between te
 
 ```
 > freemarker-generator \
--t templates/csv/md/transform.ftl -o target/contract.md \
--t templates/csv/html/transform.ftl -o target/contract.html \
+-t csv/md/transform.ftl -o target/contract.md \
+-t csv/html/transform.ftl -o target/contract.html \
 examples/data/csv/contract.csv
 
 > tree target 
diff --git a/freemarker-generator-cli/src/site/markdown/cli/introduction/getting-started.md b/freemarker-generator-cli/src/site/markdown/cli/introduction/getting-started.md
index 8dda6f7..6d5c376 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/introduction/getting-started.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/introduction/getting-started.md
@@ -84,7 +84,7 @@ The distribution ships with a couple of FreeMarker templates and the `templates/
 to better understand `Apache FreeMarker Generator`
 
 ```
-> freemarker-generator -t templates/info.ftl
+> freemarker-generator -t info.ftl
 FreeMarker Generator Information
 ------------------------------------------------------------------------------
 FreeMarker version     : 2.3.30
diff --git a/freemarker-generator-cli/src/site/markdown/cli/usage/running-examples.md b/freemarker-generator-cli/src/site/markdown/cli/usage/running-examples.md
index fa3e48f..694ce15 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/usage/running-examples.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/usage/running-examples.md
@@ -121,8 +121,8 @@ creates the following output
 Sometimes you have a CSV file which needs to be translated in Markdown or HTML - there are on-line solutions available such as [CSV To Markdown Table Generator](https://donatstudios.com/CsvToMarkdownTable) but having a local solution gives you more flexibility.
 
 ```text
-> freemarker-generator -t templates/csv/md/transform.ftl examples/data/csv/contract.csv
-> freemarker-generator -t templates/csv/html/transform.ftl examples/data/csv/contract.csv
+> freemarker-generator -t csv/md/transform.ftl examples/data/csv/contract.csv
+> freemarker-generator -t csv/html/transform.ftl examples/data/csv/contract.csv
 ```
 
 The FreeMarker template is shown below
@@ -266,10 +266,10 @@ ENDPOINT;METHOD;CONSUMES;PRODUCES;SUMMARY;DESCRIPTION
 Another day my project management asked me to create a CSV configuration file based on an Excel documents - as usual manual copying was not an option due to required data cleanup and data transformation. So I thought about Apache POI which support XLS and XLSX documents - integration of Apache POI was a breeze but the resulting code was not particularly useful example. So a more generic transformation was provided to show the transformation of Excel documents ...
 
 ```text
-> freemarker-generator -t templates/excel/html/transform.ftl examples/data/excel/test.xls
-> freemarker-generator -t templates/excel/html/transform.ftl examples/data/excel/test.xlsx
-> freemarker-generator -t templates/excel/html/transform.ftl examples/data/excel/test-multiple-sheets.xlsx
-> freemarker-generator -t templates/excel/md/transform.ftl examples/data/excel/test-multiple-sheets.xlsx
+> freemarker-generator -t excel/html/transform.ftl examples/data/excel/test.xls
+> freemarker-generator -t excel/html/transform.ftl examples/data/excel/test.xlsx
+> freemarker-generator -t excel/html/transform.ftl examples/data/excel/test-multiple-sheets.xlsx
+> freemarker-generator -t excel/md/transform.ftl examples/data/excel/test-multiple-sheets.xlsx
 ```
 
 The provided FTL transforms an Excel into a HTML document supporting multiple Excel sheets
@@ -889,11 +889,11 @@ yields
 Sometimes we simply need to transform a JSON into an equivalent YAML or the other way around
 
 ```
-> freemarker-generator -t templates/yaml/json/transform.ftl examples/data/yaml/swagger-spec.yaml 
+> freemarker-generator -t yaml/json/transform.ftl examples/data/yaml/swagger-spec.yaml 
 > freemarker-generator -i '${tools.gson.toJson(tools.yaml.parse(dataSources?values[0]))}' examples/data/yaml/swagger-spec.yaml
 > freemarker-generator -i '${tools.gson.toJson(yaml)}' -m yaml=examples/data/yaml/swagger-spec.yaml
 
-> freemarker-generator -t templates/json/yaml/transform.ftl examples/data/json/swagger-spec.json
+> freemarker-generator -t json/yaml/transform.ftl examples/data/json/swagger-spec.json
 > freemarker-generator -i '${tools.yaml.toYaml(tools.gson.parse(dataSources?values[0]))}' examples/data/json/swagger-spec.json
 > freemarker-generator -i '${tools.yaml.toYaml(json)}' -m json=examples/data/json/swagger-spec.json
 ```
diff --git a/freemarker-generator-cli/src/site/markdown/cli/usage/transforming-csv.md b/freemarker-generator-cli/src/site/markdown/cli/usage/transforming-csv.md
index 0cf1634..d3ef50b 100644
--- a/freemarker-generator-cli/src/site/markdown/cli/usage/transforming-csv.md
+++ b/freemarker-generator-cli/src/site/markdown/cli/usage/transforming-csv.md
@@ -19,7 +19,7 @@ freemarker-generator \
  -PCSV_SOURCE_FORMAT=DEFAULT \
  -PCSV_TARGET_FORMAT=EXCEL \
  -PCSV_TARGET_DELIMITER=SEMICOLON \
- -t templates/csv/csv/transform.ftl \
+ -t csv/csv/transform.ftl \
  https://raw.githubusercontent.com/apache/freemarker-generator/master/freemarker-generator-cli/examples/data/csv/contract.csv 
 ```  
 
@@ -39,7 +39,7 @@ The following command line prints the resulting MarkDown to `stdout`
 ```
 freemarker-generator \
  -PCSV_SOURCE_FORMAT=DEFAULT \
- -t templates/csv/md/transform.ftl \
+ -t csv/md/transform.ftl \
  https://raw.githubusercontent.com/apache/freemarker-generator/master/freemarker-generator-cli/examples/data/csv/contract.csv 
 ```  
 
@@ -52,7 +52,7 @@ Of course it is possible to convert a CSV to HTML as well
 ```
 freemarker-generator \
  -PCSV_SOURCE_FORMAT=DEFAULT \
- -t templates/csv/html/transform.ftl \
+ -t csv/html/transform.ftl \
  https://raw.githubusercontent.com/apache/freemarker-generator/master/freemarker-generator-cli/examples/data/csv/contract.csv 
 ```  
 
diff --git a/freemarker-generator-cli/templates/cat.ftl b/freemarker-generator-cli/src/templates/cat.ftl
similarity index 100%
rename from freemarker-generator-cli/templates/cat.ftl
rename to freemarker-generator-cli/src/templates/cat.ftl
diff --git a/freemarker-generator-cli/templates/csv/csv/transform.ftl b/freemarker-generator-cli/src/templates/csv/csv/transform.ftl
similarity index 95%
rename from freemarker-generator-cli/templates/csv/csv/transform.ftl
rename to freemarker-generator-cli/src/templates/csv/csv/transform.ftl
index b02082d..52512af 100644
--- a/freemarker-generator-cli/templates/csv/csv/transform.ftl
+++ b/freemarker-generator-cli/src/templates/csv/csv/transform.ftl
@@ -15,7 +15,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<#import "/templates/lib/commons-csv.ftl" as csv />
+<#import "/lib/commons-csv.ftl" as csv />
 <#assign dataSource = dataSources?values[0]>
 <#assign csvParser = tools.csv.parse(dataSource, csv.sourceFormat())>
 <#assign csvTargetFormat = csv.targetFormat()>
diff --git a/freemarker-generator-cli/templates/csv/html/transform.ftl b/freemarker-generator-cli/src/templates/csv/html/transform.ftl
similarity index 97%
rename from freemarker-generator-cli/templates/csv/html/transform.ftl
rename to freemarker-generator-cli/src/templates/csv/html/transform.ftl
index 7c52f73..e216558 100644
--- a/freemarker-generator-cli/templates/csv/html/transform.ftl
+++ b/freemarker-generator-cli/src/templates/csv/html/transform.ftl
@@ -15,7 +15,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<#import "/templates/lib/commons-csv.ftl" as csv />
+<#import "/lib/commons-csv.ftl" as csv />
 <#assign dataSource = dataSources?values[0]>
 <#assign csvParser = tools.csv.parse(dataSource, csv.sourceFormat())>
 <#assign csvHeaders = csvParser.getHeaderNames()>
diff --git a/freemarker-generator-cli/templates/csv/md/transform.ftl b/freemarker-generator-cli/src/templates/csv/md/transform.ftl
similarity index 96%
rename from freemarker-generator-cli/templates/csv/md/transform.ftl
rename to freemarker-generator-cli/src/templates/csv/md/transform.ftl
index ec50a98..4710e56 100644
--- a/freemarker-generator-cli/templates/csv/md/transform.ftl
+++ b/freemarker-generator-cli/src/templates/csv/md/transform.ftl
@@ -14,7 +14,7 @@
   specific language governing permissions and limitations
   under the License.
 -->
-<#import "/templates/lib/commons-csv.ftl" as csv />
+<#import "/lib/commons-csv.ftl" as csv />
 <#assign dataSource = dataSources?values[0]>
 <#assign csvParser = tools.csv.parse(dataSource, csv.sourceFormat())>
 <#assign headers = (csvParser.getHeaderMap()!{})?keys>
diff --git a/freemarker-generator-cli/templates/excel/csv/transform.ftl b/freemarker-generator-cli/src/templates/excel/csv/transform.ftl
similarity index 97%
rename from freemarker-generator-cli/templates/excel/csv/transform.ftl
rename to freemarker-generator-cli/src/templates/excel/csv/transform.ftl
index 0138bf5..208dc07 100644
--- a/freemarker-generator-cli/templates/excel/csv/transform.ftl
+++ b/freemarker-generator-cli/src/templates/excel/csv/transform.ftl
@@ -16,7 +16,7 @@
   under the License.
 -->
 <#-- Parse the first data source & sheet of the Excel document -->
-<#import "/templates/lib/commons-csv.ftl" as csv />
+<#import "/lib/commons-csv.ftl" as csv />
 <#assign workbook = tools.excel.parse(dataSources?values[0])>
 <#assign sheet = tools.excel.getSheets(workbook)[0]>
 <#assign records = tools.excel.toTable(sheet)>
diff --git a/freemarker-generator-cli/templates/excel/html/transform.ftl b/freemarker-generator-cli/src/templates/excel/html/transform.ftl
similarity index 100%
rename from freemarker-generator-cli/templates/excel/html/transform.ftl
rename to freemarker-generator-cli/src/templates/excel/html/transform.ftl
diff --git a/freemarker-generator-cli/templates/excel/md/transform.ftl b/freemarker-generator-cli/src/templates/excel/md/transform.ftl
similarity index 100%
rename from freemarker-generator-cli/templates/excel/md/transform.ftl
rename to freemarker-generator-cli/src/templates/excel/md/transform.ftl
diff --git a/freemarker-generator-cli/templates/info.ftl b/freemarker-generator-cli/src/templates/info.ftl
similarity index 100%
rename from freemarker-generator-cli/templates/info.ftl
rename to freemarker-generator-cli/src/templates/info.ftl
diff --git a/freemarker-generator-cli/templates/json/yaml/transform.ftl b/freemarker-generator-cli/src/templates/json/yaml/transform.ftl
similarity index 100%
rename from freemarker-generator-cli/templates/json/yaml/transform.ftl
rename to freemarker-generator-cli/src/templates/json/yaml/transform.ftl
diff --git a/freemarker-generator-cli/templates/lib/commons-csv.ftl b/freemarker-generator-cli/src/templates/lib/commons-csv.ftl
similarity index 100%
rename from freemarker-generator-cli/templates/lib/commons-csv.ftl
rename to freemarker-generator-cli/src/templates/lib/commons-csv.ftl
diff --git a/freemarker-generator-cli/templates/yaml/json/transform.ftl b/freemarker-generator-cli/src/templates/yaml/json/transform.ftl
similarity index 100%
rename from freemarker-generator-cli/templates/yaml/json/transform.ftl
rename to freemarker-generator-cli/src/templates/yaml/json/transform.ftl
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/AbstractMainTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/AbstractMainTest.java
index 2d3e101..ac92c91 100644
--- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/AbstractMainTest.java
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/AbstractMainTest.java
@@ -21,13 +21,17 @@ import java.io.StringWriter;
 import java.io.Writer;
 import java.util.Arrays;
 
+/**
+ * Run unit tests with local templates directory.
+ */
 abstract class AbstractMainTest {
 
     private static final String SPACE = " ";
+    private static final String TEST_TEMPLATES_DIRECTORY = "./src/templates";
 
     String execute(String commandLine) throws IOException {
         try (Writer writer = new StringWriter()) {
-            final String[] args = commandLine.split(SPACE);
+            final String[] args = buildFinalCommandLine(commandLine).split(SPACE);
             if (Main.execute(args, writer) == 0) {
                 return writer.toString();
             } else {
@@ -35,4 +39,8 @@ abstract class AbstractMainTest {
             }
         }
     }
+
+    private String buildFinalCommandLine(String commandLine) {
+        return String.format("--basedir %s %s", TEST_TEMPLATES_DIRECTORY, commandLine);
+    }
 }
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java
index 97f7e77..e7c8c2d 100644
--- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/ExamplesTest.java
@@ -31,12 +31,12 @@ public class ExamplesTest extends AbstractMainTest {
 
     @Test
     public void shouldRunInfo() throws IOException {
-        assertValid(execute("-t templates/info.ftl README.md"));
+        assertValid(execute("-t info.ftl README.md"));
     }
 
     @Test
     public void shouldRunMultipleTimes() throws IOException {
-        assertValid(execute("--times=2 -t templates/info.ftl README.md"));
+        assertValid(execute("--times=2 -t info.ftl README.md"));
     }
 
     @Test
@@ -46,22 +46,22 @@ public class ExamplesTest extends AbstractMainTest {
 
     @Test
     public void shouldRunCsvExamples() throws IOException {
-        assertValid(execute("-t templates/csv/html/transform.ftl src/examples/data/csv/contract.csv"));
-        assertValid(execute("-t templates/csv/md/transform.ftl src/examples/data/csv/contract.csv"));
+        assertValid(execute("-t csv/html/transform.ftl src/examples/data/csv/contract.csv"));
+        assertValid(execute("-t csv/md/transform.ftl src/examples/data/csv/contract.csv"));
         assertValid(execute("-t src/examples/templates/csv/shell/curl.ftl src/examples/data/csv/user.csv"));
         assertValid(execute("-t src/examples/templates/csv/fo/transform.ftl src/examples/data/csv/locker-test-users.csv"));
         assertValid(execute("-t src/examples/templates/csv/fo/transactions.ftl src/examples/data/csv/transactions.csv"));
         assertValid(execute("-t src/examples/templates/csv/html/transactions.ftl src/examples/data/csv/transactions.csv"));
-        assertValid(execute("-t templates/csv/csv/transform.ftl src/examples/data/csv/contract.csv"));
+        assertValid(execute("-t csv/csv/transform.ftl src/examples/data/csv/contract.csv"));
     }
 
     @Test
     public void shouldRunExcelExamples() throws IOException {
-        assertValid(execute("-t templates/excel/html/transform.ftl src/examples/data/excel/test.xls"));
-        assertValid(execute("-t templates/excel/html/transform.ftl src/examples/data/excel/test.xlsx"));
-        assertValid(execute("-t templates/excel/html/transform.ftl src/examples/data/excel/test-multiple-sheets.xlsx"));
-        assertValid(execute("-t templates/excel/md/transform.ftl src/examples/data/excel/test-multiple-sheets.xlsx"));
-        assertValid(execute("-t templates/excel/csv/transform.ftl src/examples/data/excel/test-multiple-sheets.xlsx"));
+        assertValid(execute("-t excel/html/transform.ftl src/examples/data/excel/test.xls"));
+        assertValid(execute("-t excel/html/transform.ftl src/examples/data/excel/test.xlsx"));
+        assertValid(execute("-t excel/html/transform.ftl src/examples/data/excel/test-multiple-sheets.xlsx"));
+        assertValid(execute("-t excel/md/transform.ftl src/examples/data/excel/test-multiple-sheets.xlsx"));
+        assertValid(execute("-t excel/csv/transform.ftl src/examples/data/excel/test-multiple-sheets.xlsx"));
         assertValid(execute("-t src/examples/templates/excel/csv/custom.ftl -Pcsv.format=MYSQL src/examples/data/excel/test.xls"));
         assertValid(execute("-t src/examples/templates/excel/dataframe/transform.ftl src/examples/data/excel/test.xls"));
     }
@@ -75,7 +75,7 @@ public class ExamplesTest extends AbstractMainTest {
     public void shouldRunJsonExamples() throws IOException {
         assertValid(execute("-t src/examples/templates/json/csv/swagger-endpoints.ftl src/examples/data/json/swagger-spec.json"));
         assertValid(execute("-t src/examples/templates/json/md/github-users.ftl src/examples/data/json/github-users.json"));
-        assertValid(execute("-t templates/json/yaml/transform.ftl src/examples/data/json/swagger-spec.json"));
+        assertValid(execute("-t json/yaml/transform.ftl src/examples/data/json/swagger-spec.json"));
     }
 
     @Test
@@ -86,7 +86,7 @@ public class ExamplesTest extends AbstractMainTest {
     @Test
     public void shouldRunYamlExamples() throws IOException {
         assertValid(execute("-t src/examples/templates/yaml/txt/transform.ftl src/examples/data/yaml/customer.yaml"));
-        assertValid(execute("-t templates/yaml/json/transform.ftl src/examples/data/yaml/swagger-spec.yaml"));
+        assertValid(execute("-t yaml/json/transform.ftl src/examples/data/yaml/swagger-spec.yaml"));
     }
 
     @Test
@@ -135,8 +135,8 @@ public class ExamplesTest extends AbstractMainTest {
 
     @Test
     public void shouldTransformMultipleTemplates() throws IOException {
-        assertValid(execute("-t templates/csv/md/transform.ftl -t templates/csv/html/transform.ftl src/examples/data/csv/contract.csv"));
-        assertValid(execute("-t templates/csv/md/transform.ftl -o target/contract.md -t templates/csv/html/transform.ftl -o target/contract.html src/examples/data/csv/contract.csv"));
+        assertValid(execute("-t csv/md/transform.ftl -t csv/html/transform.ftl src/examples/data/csv/contract.csv"));
+        assertValid(execute("-t csv/md/transform.ftl -o target/contract.md -t csv/html/transform.ftl -o target/contract.html src/examples/data/csv/contract.csv"));
     }
 
     @Test
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/TemplateLoadingTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/TemplateLoadingTest.java
index 723f4a8..1ec9a0f 100644
--- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/TemplateLoadingTest.java
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/TemplateLoadingTest.java
@@ -26,7 +26,7 @@ import static org.junit.Assert.assertEquals;
 public class TemplateLoadingTest extends AbstractMainTest {
 
     private static final int SUCCESS = 0;
-    private static final String ANY_TEMPLATE_NAME = "templates/info.ftl";
+    private static final String ANY_TEMPLATE_NAME = "src/templates/info.ftl";
     private static final String CURR_DIR = System.getProperty("user.dir", ".");
 
     @Test
diff --git a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplierTest.java b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplierTest.java
index 79c9ea4..04f8180 100644
--- a/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplierTest.java
+++ b/freemarker-generator-cli/src/test/java/org/apache/freemarker/generator/cli/config/TemplateDirectorySupplierTest.java
@@ -26,20 +26,13 @@ import static org.junit.Assert.assertEquals;
 
 public class TemplateDirectorySupplierTest {
 
-    // Depending on the local configuration the "~/.freemarker-cli" directory might be found.
+    // Depending on the local configuration the "~/.freemarker-generator" directory might be found.
     private final int nrOfDefaultTemplateDirectories = templateDirectories(null).size();
 
     @Test
-    public void shouldRemoveDuplicateTemplateDirectorie() throws IOException {
-        final List<File> directories = templateDirectories(".");
-
-        assertEquals(nrOfDefaultTemplateDirectories, directories.size());
-    }
-
-    @Test
     public void shouldAddTemplateDirectory() throws IOException {
-        assertEquals(nrOfDefaultTemplateDirectories + 1, templateDirectories("templates").size());
-        assertEquals(nrOfDefaultTemplateDirectories + 1, templateDirectories("./templates").size());
+        assertEquals(nrOfDefaultTemplateDirectories + 1, templateDirectories("src/templates").size());
+        assertEquals(nrOfDefaultTemplateDirectories + 1, templateDirectories("./src/templates").size());
     }
 
     @Test