diff --git a/README.md b/README.md
index 26b8923..3a6db0d 100644
--- a/README.md
+++ b/README.md
@@ -79,7 +79,7 @@
             </goals>
             <configuration>
               <!-- Optional, defaults to src/main/freemarker/generator -->
-              <sourceDirectory>src/main/freemarker</templateDirectory>
+              <sourceDirectory>src/main/freemarker</sourceDirectory>
               <!-- Optional, defaults to src/main/freemarker/generator/template -->
               <templateDirectory>src/main/freemarker/template</templateDirectory>
               <!-- Optional, defaults to src/main/freemarker/generator -->
diff --git a/pom.xml b/pom.xml
index 4f177ba..7e826cb 100644
--- a/pom.xml
+++ b/pom.xml
@@ -18,7 +18,7 @@
     <maven-plugin-api.version>3.5.2</maven-plugin-api.version>
     <maven-plugin-annotations.version>3.5</maven-plugin-annotations.version>
     <fastutil.version>8.1.0</fastutil.version>
-    <freemarker.version>2.3.23</freemarker.version>
+    <freemarker.version>2.3.29</freemarker.version>
     <gson.version>2.8.6</gson.version>
     <jmockit.version>1.32</jmockit.version>
     <org.testng.version>6.8</org.testng.version>
diff --git a/src/test/java/org/apache/freemarker/generator/FreeMarkerMojoTest.java b/src/test/java/org/apache/freemarker/generator/FreeMarkerMojoTest.java
index f5b846b..31281fb 100644
--- a/src/test/java/org/apache/freemarker/generator/FreeMarkerMojoTest.java
+++ b/src/test/java/org/apache/freemarker/generator/FreeMarkerMojoTest.java
@@ -49,14 +49,15 @@
 
 public class FreeMarkerMojoTest extends Assert {
 
-  public static final File testOutputDir = new File("target/test-output/freemarker-mojo");
+  private static final File TEST_OUTPUT_DIR = new File("target/test-output/freemarker-mojo");
+  private static final String FREEMARKER_VERSION = "2.3.29";
   
   @BeforeClass
   public static void beforeClass() throws IOException {
     // Clean output dir before each run.
-    if (testOutputDir.exists()) {
+    if (TEST_OUTPUT_DIR.exists()) {
       // Recursively delete output from previous run.
-      Files.walk(testOutputDir.toPath())
+      Files.walk(TEST_OUTPUT_DIR.toPath())
        .sorted(Comparator.reverseOrder())
        .map(Path::toFile)
        .forEach(File::delete);
@@ -89,8 +90,8 @@
       mojo.execute();
     }).withMessage("freeMarkerVersion is required");
 
-    File testCaseOutputDir = new File(testOutputDir, "executeTest");
-    Deencapsulation.setField(mojo, "freeMarkerVersion", "2.3.23");
+    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "executeTest");
+    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
     Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
     Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
     Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
@@ -155,8 +156,8 @@
 
     FreeMarkerMojo mojo = new FreeMarkerMojo();
     
-    File testCaseOutputDir = new File(testOutputDir, "generateTestSourceTest");
-    Deencapsulation.setField(mojo, "freeMarkerVersion", "2.3.23");
+    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "generateTestSourceTest");
+    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
     Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
     Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
     Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
@@ -192,8 +193,8 @@
 
     FreeMarkerMojo mojo = new FreeMarkerMojo();
     
-    File testCaseOutputDir = new File(testOutputDir, "generateTestSourceTest");
-    Deencapsulation.setField(mojo, "freeMarkerVersion", "2.3.23");
+    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "generateTestSourceTest");
+    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
     Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
     Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
     Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
@@ -218,15 +219,15 @@
       @Mocked Configuration config) {
     
     new Expectations(config, FactoryUtil.class) {{
-      FactoryUtil.createConfiguration("2.3.23"); result = config;
+      FactoryUtil.createConfiguration(FREEMARKER_VERSION); result = config;
       config.setTemplateLoader((TemplateLoader) any); result = new RuntimeException("test exception");
     }};
 
     FreeMarkerMojo mojo = new FreeMarkerMojo();
 
-    File testCaseOutputDir = new File(testOutputDir, "setTemplateLoaderException");
+    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "setTemplateLoaderException");
 
-    Deencapsulation.setField(mojo, "freeMarkerVersion", "2.3.23");
+    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
     Deencapsulation.setField(mojo, "sourceDirectory", testCaseOutputDir);
     Deencapsulation.setField(mojo, "templateDirectory", new File(testCaseOutputDir, "template"));
     Deencapsulation.setField(mojo, "generatorDirectory", new File(testCaseOutputDir, "data"));
@@ -252,9 +253,9 @@
     FreeMarkerMojo mojo = new FreeMarkerMojo();
 
     File sourceDirectory = new File("src/test/data/freemarker-mojo");
-    File testCaseOutputDir = new File(testOutputDir, "loadFreemarkerProperties");
+    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerProperties");
 
-    Deencapsulation.setField(mojo, "freeMarkerVersion", "2.3.23");
+    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
     Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory);
     Deencapsulation.setField(mojo, "templateDirectory", new File( sourceDirectory, "template"));
     Deencapsulation.setField(mojo, "generatorDirectory", new File( sourceDirectory, "data"));
@@ -288,9 +289,9 @@
     FreeMarkerMojo mojo = new FreeMarkerMojo();
 
     File sourceDirectory = new File("src/test/data/freemarker-mojo");
-    File testCaseOutputDir = new File(testOutputDir, "loadFreemarkerPropertiesExceptionTest");
+    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerPropertiesExceptionTest");
 
-    Deencapsulation.setField(mojo, "freeMarkerVersion", "2.3.23");
+    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
     Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory);
     Deencapsulation.setField(mojo, "templateDirectory", new File( sourceDirectory, "template"));
     Deencapsulation.setField(mojo, "generatorDirectory", new File( sourceDirectory, "data"));
@@ -322,9 +323,9 @@
     FreeMarkerMojo mojo = new FreeMarkerMojo();
 
     File sourceDirectory = new File("src/test/data/freemarker-mojo");
-    File testCaseOutputDir = new File(testOutputDir, "loadFreemarkerProperties");
+    File testCaseOutputDir = new File(TEST_OUTPUT_DIR, "loadFreemarkerProperties");
 
-    Deencapsulation.setField(mojo, "freeMarkerVersion", "2.3.23");
+    Deencapsulation.setField(mojo, "freeMarkerVersion", FREEMARKER_VERSION);
     Deencapsulation.setField(mojo, "sourceDirectory", sourceDirectory);
     Deencapsulation.setField(mojo, "templateDirectory", new File( sourceDirectory, "template"));
     Deencapsulation.setField(mojo, "generatorDirectory", new File( sourceDirectory, "data"));
