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/02/16 19:21:53 UTC

[freemarker-generator] branch FREEMARKER-129 updated: FREEMARKER-129 Add `freemarker-generator-maven-plugin-sample`

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

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


The following commit(s) were added to refs/heads/FREEMARKER-129 by this push:
     new a075cde  FREEMARKER-129 Add `freemarker-generator-maven-plugin-sample`
a075cde is described below

commit a075cded26d02c061f8bdb4d170b0c8d40f9c47d
Author: Siegfried Goeschl <si...@gmail.com>
AuthorDate: Sun Feb 16 20:21:38 2020 +0100

    FREEMARKER-129 Add `freemarker-generator-maven-plugin-sample`
---
 CHANGELOG.md                                       |  1 +
 freemarker-generator-maven-plugin-sample/README.md | 13 ++++
 freemarker-generator-maven-plugin-sample/pom.xml   | 73 ++++++++++++++++++++++
 .../generator/maven/sample/HelloWorld.java.json    |  6 ++
 .../freemarker/generator/generator/test.txt.json   |  6 ++
 .../generator/template/HelloWorld.java.ftl         | 30 +++++++++
 .../main/freemarker/generator/template/test.ftl    | 43 +++++++++++++
 freemarker-generator-maven-plugin/README.md        |  2 +-
 .../generator/maven/GeneratingFileVisitor.java     |  1 +
 pom.xml                                            |  1 +
 10 files changed, 175 insertions(+), 1 deletion(-)

diff --git a/CHANGELOG.md b/CHANGELOG.md
index 3b6a840..24efce0 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -5,6 +5,7 @@ All notable changes to this project will be documented in this file. We try to a
 ## 0.1.0-SNAPSHOT
 
 ### Added
+* [FREEMARKER-129] Add `freemarker-generator-maven-plugin-sample`
 * [FREEMARKER-129] Migrate `freemarker-cli` into `freemarker-generator` project (see [https://github.com/sgoeschl/freemarker-cli](https://github.com/sgoeschl/freemarker-cli))
 
 ### Changed
diff --git a/freemarker-generator-maven-plugin-sample/README.md b/freemarker-generator-maven-plugin-sample/README.md
new file mode 100644
index 0000000..4669e07
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/README.md
@@ -0,0 +1,13 @@
+Apache FreeMarker Generator Maven Plugin Sample
+=============================================================================
+
+This project allows to play around with `freemarker-generator-maven-plugin` quickly. 
+
+Let's create a Java class and text file using the `freemarker-generator-maven-plugin`, compile and package it (so you know that the generated code is compiling)
+
+```text
+> mvn clean package
+> cat target/generated-sources/freemarker/generator/org/apache/freemarker/generator/maven/sample/HelloWorld.java 
+> cat target/generated-sources/freemarker/generator/test.txt
+```
+
diff --git a/freemarker-generator-maven-plugin-sample/pom.xml b/freemarker-generator-maven-plugin-sample/pom.xml
new file mode 100644
index 0000000..b55014e
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/pom.xml
@@ -0,0 +1,73 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+   Licensed to the Apache Software Foundation (ASF) under one or more
+   contributor license agreements.  See the NOTICE file distributed with
+   this work for additional information regarding copyright ownership.
+   The ASF licenses this file to You under the Apache License, Version 2.0
+   (the "License"); you may not use this file except in compliance with
+   the License.  You may obtain a copy of the License at
+
+       http://www.apache.org/licenses/LICENSE-2.0
+
+   Unless required by applicable law or agreed to in writing, software
+   distributed under the License is distributed on an "AS IS" BASIS,
+   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+   See the License for the specific language governing permissions and
+   limitations under the License.
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+    <parent>
+        <groupId>org.apache.freemarker.generator</groupId>
+        <artifactId>freemarker-generator</artifactId>
+        <version>0.1.0-SNAPSHOT</version>
+    </parent>
+    <artifactId>freemarker-generator-maven-plugin-sample</artifactId>
+    <name>Apache FreeMarker Generator: Maven Plugin Sample</name>
+    <description>Sample project for Apache FreeMarker Generator Plugin</description>
+    <dependencies>
+        <dependency>
+            <groupId>junit</groupId>
+            <artifactId>junit</artifactId>
+            <scope>test</scope>
+        </dependency>
+    </dependencies>
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.freemarker.generator</groupId>
+                <artifactId>freemarker-generator-maven-plugin</artifactId>
+                <version>${project.version}</version>
+                <configuration>
+                    <!-- Required. Specifies the compatibility version for template processing -->
+                    <freeMarkerVersion>${freemarker.version}</freeMarkerVersion>
+                </configuration>
+                <executions>
+                    <!-- 
+                        If you want to generate files during other phases, just add more execution
+                        tags and specify appropriate phase, sourceDirectory and outputDirectory values.
+                    -->
+                    <execution>
+                        <id>freemarker-generator</id>
+                        <!-- Optional, defaults to generate-sources -->
+                        <phase>generate-sources</phase>
+                        <goals>
+                            <!-- Required, must be generate -->
+                            <goal>generate</goal>
+                        </goals>
+                        <configuration>
+                            <!-- Optional, defaults to src/main/freemarker/generator -->
+                            <sourceDirectory>src/main/freemarker/generator</sourceDirectory>
+                            <!-- Optional, defaults to src/main/freemarker/generator/templatee -->
+                            <templateDirectory>src/main/freemarker/generator/template</templateDirectory>
+                            <!-- Optional, defaults to src/main/freemarker/generator/generatorr -->
+                            <generatorDirectory>src/main/freemarker/generator/generator</generatorDirectory>
+                            <!-- Optional, defaults to target/generated-sources/freemarker/generator -->
+                            <outputDirectory>target/generated-sources/freemarker/generator</outputDirectory>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
\ No newline at end of file
diff --git a/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/org/apache/freemarker/generator/maven/sample/HelloWorld.java.json b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/org/apache/freemarker/generator/maven/sample/HelloWorld.java.json
new file mode 100644
index 0000000..088b6b5
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/org/apache/freemarker/generator/maven/sample/HelloWorld.java.json
@@ -0,0 +1,6 @@
+{
+  "templateName": "HelloWorld.java.ftl",
+  "dataModel": {
+    "name": "Apache FreeMarker Maven Plugin"
+  }
+}
\ No newline at end of file
diff --git a/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/test.txt.json b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/test.txt.json
new file mode 100644
index 0000000..ad68303
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/generator/test.txt.json
@@ -0,0 +1,6 @@
+{
+  "templateName": "test.ftl",
+  "dataModel": {
+    "testVar": "test value"
+  }
+}
\ No newline at end of file
diff --git a/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/HelloWorld.java.ftl b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/HelloWorld.java.ftl
new file mode 100644
index 0000000..9f7f41a
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/HelloWorld.java.ftl
@@ -0,0 +1,30 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package ${session.currentProject.model.groupId}.maven.sample;
+
+/**
+ * Generated by Apache FreeMarker ${pomProperties["freemarker.version"]}.
+ */
+public class HelloWorld 
+{
+	public static void main (String[] args)
+	{
+	    System.out.println("Hello ${name}!");
+	}
+}
\ No newline at end of file
diff --git a/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/test.ftl b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/test.ftl
new file mode 100644
index 0000000..f422b48
--- /dev/null
+++ b/freemarker-generator-maven-plugin-sample/src/main/freemarker/generator/template/test.ftl
@@ -0,0 +1,43 @@
+<#ftl output_format="plainText">
+<#--
+  Licensed to the Apache Software Foundation (ASF) under one
+  or more contributor license agreements.  See the NOTICE file
+  distributed with this work for additional information
+  regarding copyright ownership.  The ASF licenses this file
+  to you under the Apache License, Version 2.0 (the
+  "License"); you may not use this file except in compliance
+  with the License.  You may obtain a copy of the License at
+    http://www.apache.org/licenses/LICENSE-2.0
+  Unless required by applicable law or agreed to in writing,
+  software distributed under the License is distributed on an
+  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+  KIND, either express or implied.  See the License for the
+  specific language governing permissions and limitations
+  under the License.
+-->
+<#assign model=session.currentProject.model>
+<#assign properties=session.currentProject.properties>
+<#assign dependencies=session.currentProject.dependencies>
+Accessing Generator Data
+-----------------------------------------------------------------------------
+This is a test freemarker template. Test json data: '${testVar}'
+
+Maven Project Properties
+-----------------------------------------------------------------------------
+<#list properties as key,value>
+    - ${key?right_pad(38)} ==> ${value}<#lt>
+</#list>
+
+Maven Project Model
+-----------------------------------------------------------------------------
+- ArtifactId                             ==> ${model.artifactId}
+- GroupId                                ==> ${model.groupId}
+- Version                                ==> ${model.version}
+- Name                                   ==> ${model.name}
+- Description                            ==> ${model.description!""}
+
+Maven Project Dependencies
+-----------------------------------------------------------------------------
+<#list dependencies as dependency>
+- ${dependency.groupId}:${dependency.artifactId}:${dependency.version}:${dependency.optional?string('yes', 'no')}
+</#list>
\ No newline at end of file
diff --git a/freemarker-generator-maven-plugin/README.md b/freemarker-generator-maven-plugin/README.md
index 2bb5fb8..2a9b8cc 100644
--- a/freemarker-generator-maven-plugin/README.md
+++ b/freemarker-generator-maven-plugin/README.md
@@ -28,7 +28,7 @@ Add the following snippet within the `<plugins>` tag of your pom.xml:
 
 ```xml
       <plugin>
-        <groupId>com.oath</groupId>
+        <groupId>org.apache.freemarker.generator</groupId>
         <artifactId>freemarker-generator-maven-plugin</artifactId>
         <version>${freemarker-generator-maven-plugin.version}</version>
         <configuration>
diff --git a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java
index 69458d2..4ca3ce2 100644
--- a/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java
+++ b/freemarker-generator-maven-plugin/src/main/java/org/apache/freemarker/generator/maven/GeneratingFileVisitor.java
@@ -69,6 +69,7 @@ public class GeneratingFileVisitor extends SimpleFileVisitor<Path> {
                 throw new RuntimeException("Unknown file extension: " + path);
             }
             pathProcessor.providePropertiesFromFile(path, builder);
+            builder.addToDataModel("session", session);
             builder.addToDataModel("pomProperties", session.getCurrentProject().getProperties());
             builder.create().generate(config);
         }
diff --git a/pom.xml b/pom.xml
index 2f27323..57628fe 100644
--- a/pom.xml
+++ b/pom.xml
@@ -54,6 +54,7 @@
         <module>freemarker-generator-tools</module>
         <module>freemarker-generator-cli</module>
         <module>freemarker-generator-maven-plugin</module>
+        <module>freemarker-generator-maven-plugin-sample</module>
     </modules>
 
     <properties>