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>