From 39f9acc81d8c4c99900e2206ef2d83bea465bcd6 Mon Sep 17 00:00:00 2001
From: rschoene <rene.schoene@tu-dresden.de>
Date: Wed, 8 Apr 2020 12:17:08 +0200
Subject: [PATCH] Split project into base and example.

---
 .gitignore                                    |   5 -
 build.gradle                                  | 135 ++++------------
 gradle.properties                             |   2 +
 ros2rag.base/.gitignore                       |   5 +
 ros2rag.base/build.gradle                     | 111 ++++++++++++++
 .../src}/main/jastadd/Analysis.jrag           |   0
 .../src}/main/jastadd/DumpTree.jrag           |   0
 .../src}/main/jastadd/Errors.jrag             |   0
 .../src}/main/jastadd/Preamble.parser         |   0
 .../src}/main/jastadd/RelAst.ast              |   0
 .../src}/main/jastadd/RelAst.flex             |   0
 .../src}/main/jastadd/RelAst.parser           |   0
 .../src}/main/jastadd/Ros2Rag.ast             |   0
 .../main/jastadd/backend/AbstractGrammar.jadd |   0
 .../src}/main/jastadd/backend/Aspect.jadd     |   3 +-
 .../jastadd/ros2rag/compiler/Compiler.java    |   0
 .../jastadd/ros2rag/compiler/SimpleMain.java  |   0
 .../org/jastadd/ros2rag/compiler/Utils.java   |   0
 .../ros2rag/compiler/options/CommandLine.java |   0
 .../ros2rag/compiler/options/EnumOption.java  |   0
 .../ros2rag/compiler/options/FlagOption.java  |   0
 .../ros2rag/compiler/options/Option.java      |   0
 .../compiler/options/StringOption.java        |   0
 .../src}/main/resources/log4j2.xml            |   0
 .../jastadd/ros2rag/tests/RosToRagTest.java   |   0
 .../src}/test/resources/MinimalExample.relast |   0
 ros2rag.example/.gitignore                    |   5 +
 ros2rag.example/build.gradle                  | 121 +++++++++++++++
 ros2rag.example/hpps.build.gradle             | 145 ++++++++++++++++++
 .../src/main/jastadd/Example.relast           |  15 ++
 .../inf/st/ros2rag/example/Main.java          |  12 ++
 settings.gradle                               |   4 +
 32 files changed, 455 insertions(+), 108 deletions(-)
 create mode 100644 gradle.properties
 create mode 100644 ros2rag.base/.gitignore
 create mode 100644 ros2rag.base/build.gradle
 rename {src => ros2rag.base/src}/main/jastadd/Analysis.jrag (100%)
 rename {src => ros2rag.base/src}/main/jastadd/DumpTree.jrag (100%)
 rename {src => ros2rag.base/src}/main/jastadd/Errors.jrag (100%)
 rename {src => ros2rag.base/src}/main/jastadd/Preamble.parser (100%)
 rename {src => ros2rag.base/src}/main/jastadd/RelAst.ast (100%)
 rename {src => ros2rag.base/src}/main/jastadd/RelAst.flex (100%)
 rename {src => ros2rag.base/src}/main/jastadd/RelAst.parser (100%)
 rename {src => ros2rag.base/src}/main/jastadd/Ros2Rag.ast (100%)
 rename {src => ros2rag.base/src}/main/jastadd/backend/AbstractGrammar.jadd (100%)
 rename {src => ros2rag.base/src}/main/jastadd/backend/Aspect.jadd (95%)
 rename {src => ros2rag.base/src}/main/java/org/jastadd/ros2rag/compiler/Compiler.java (100%)
 rename {src => ros2rag.base/src}/main/java/org/jastadd/ros2rag/compiler/SimpleMain.java (100%)
 rename {src => ros2rag.base/src}/main/java/org/jastadd/ros2rag/compiler/Utils.java (100%)
 rename {src => ros2rag.base/src}/main/java/org/jastadd/ros2rag/compiler/options/CommandLine.java (100%)
 rename {src => ros2rag.base/src}/main/java/org/jastadd/ros2rag/compiler/options/EnumOption.java (100%)
 rename {src => ros2rag.base/src}/main/java/org/jastadd/ros2rag/compiler/options/FlagOption.java (100%)
 rename {src => ros2rag.base/src}/main/java/org/jastadd/ros2rag/compiler/options/Option.java (100%)
 rename {src => ros2rag.base/src}/main/java/org/jastadd/ros2rag/compiler/options/StringOption.java (100%)
 rename {src => ros2rag.base/src}/main/resources/log4j2.xml (100%)
 rename {src => ros2rag.base/src}/test/java/org/jastadd/ros2rag/tests/RosToRagTest.java (100%)
 rename {src => ros2rag.base/src}/test/resources/MinimalExample.relast (100%)
 create mode 100644 ros2rag.example/.gitignore
 create mode 100644 ros2rag.example/build.gradle
 create mode 100644 ros2rag.example/hpps.build.gradle
 create mode 100644 ros2rag.example/src/main/jastadd/Example.relast
 create mode 100644 ros2rag.example/src/main/java/de/tudresden/inf/st/ros2rag/example/Main.java
 create mode 100644 settings.gradle

diff --git a/.gitignore b/.gitignore
index 63f236c..b43a58b 100644
--- a/.gitignore
+++ b/.gitignore
@@ -4,8 +4,3 @@
 .classpath
 .idea/
 .gradle/
-build
-src/gen-res/
-src/gen/
-out/
-*.class
diff --git a/build.gradle b/build.gradle
index ecfc52f..7e1c7b5 100644
--- a/build.gradle
+++ b/build.gradle
@@ -1,114 +1,47 @@
-
-apply plugin: 'java'
-apply plugin: 'jastadd'
-apply plugin: 'application'
-apply plugin: "idea"
-
-sourceCompatibility = 1.8
-
-mainClassName = 'org.jastadd.ros2rag.compiler.Compiler'
-
-repositories {
-    jcenter()
-}
-
-buildscript {
-    repositories.jcenter()
-    dependencies {
-        classpath 'org.jastadd:jastaddgradle:1.13.3'
-    }
-}
-
-dependencies {
-    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.0'
-    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.0'
-    testCompile 'org.assertj:assertj-core:3.12.1'
-    compile 'com.fasterxml.jackson.core:jackson-core:2.9.8'
-    compile 'com.fasterxml.jackson.core:jackson-databind:2.9.8'
-    compile 'org.jastadd:jastadd:2.3.4'
-    runtime 'org.jastadd:jastadd:2.3.4'
-    compile group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
-    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.10.0'
-    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.10.0'
-}
-
-sourceSets {
-    main {
-        java.srcDir "src/gen/java"
-        java.srcDir "buildSrc/gen/java"
-    }
-}
-
-test {
-    useJUnitPlatform()
-
-    maxHeapSize = '1G'
+plugins {
+    id "com.github.ben-manes.versions" version "0.20.0"
 }
 
-jar {
-    manifest {
-        attributes "Main-Class": 'org.jastadd.ros2rag.compiler.Compiler'
-    }
-
-    from {
-        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
-    }
+allprojects  {
+	group = 'de.tudresden.inf.st'
+	version = '0.1'
 }
 
-jastadd {
-    configureModuleBuild()
-    modules {
-        //noinspection GroovyAssignabilityCheck
-        module("RelAst") {
-
-            java {
-                basedir "."
-                include "src/main/**/*.java"
-                include "src/gen/**/*.java"
-            }
-
-            jastadd {
-                basedir "src/main/jastadd/"
-                include "**/*.ast"
-                include "**/*.jadd"
-                include "**/*.jrag"
-            }
-
-            scanner {
-                include "src/main/jastadd/RelAst.flex"
-            }
+subprojects {
+	apply plugin: 'java'
+	apply plugin: 'idea'
 
-            parser {
-                include "src/main/jastadd/Preamble.parser"
-                include "src/main/jastadd/RelAst.parser"
-            }
-        }
-    }
+	sourceCompatibility = 1.8
+	targetCompatibility = 1.8
 
-    cleanGen.doFirst {
-        delete "src/gen/java/org"
-        delete "src/gen-res/BuildInfo.properties"
-    }
+	task packageSources(type: Jar) {
+		classifier = 'sources'
+		from sourceSets.main.allSource
+	}
 
-    preprocessParser.doFirst {
+	artifacts.archives packageSources
+	configurations {
+		testArtifacts.extendsFrom testRuntime
+	}
 
-        args += ["--no-beaver-symbol"]
+	task testJar(type: Jar) {
+		classifier "test"
+		from sourceSets.test.output
+	}
 
-    }
+	artifacts {
+		testArtifacts testJar
+	}
 
-    module = "RelAst"
+	repositories {
+		mavenCentral()
+	}
 
-    astPackage = 'org.jastadd.ros2rag.ast'
+	dependencies {
+		implementation group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.11.2'
+		implementation group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.11.2'
+		testImplementation group: 'junit', name: 'junit', version: '4.12'
+		testImplementation group: 'org.hamcrest', name: 'hamcrest-junit', version: '2.0.0.0'
+	}
 
-    parser.name = 'RelAstParser'
-
-    genDir = 'src/gen/java'
-
-    buildInfoDir = 'src/gen-res'
-
-    scanner.genDir = "src/gen/java/org/jastadd/ros2rag/scanner"
-    parser.genDir = "src/gen/java/org/jastadd/ros2rag/parser"
-
-    jastaddOptions = ["--lineColumnNumbers", "--safeLazy", "--visitCheck=true", "--rewrite=cnta", "--cache=all"]
 }
-
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..8dfaf2b
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,2 @@
+jackson_version = 2.9.8
+apache_httpcomponents_version = 4.5.8
diff --git a/ros2rag.base/.gitignore b/ros2rag.base/.gitignore
new file mode 100644
index 0000000..87b4cdd
--- /dev/null
+++ b/ros2rag.base/.gitignore
@@ -0,0 +1,5 @@
+build
+src/gen-res/
+src/gen/
+out/
+*.class
diff --git a/ros2rag.base/build.gradle b/ros2rag.base/build.gradle
new file mode 100644
index 0000000..f9795a4
--- /dev/null
+++ b/ros2rag.base/build.gradle
@@ -0,0 +1,111 @@
+apply plugin: 'jastadd'
+apply plugin: 'application'
+
+sourceCompatibility = 1.8
+
+mainClassName = 'org.jastadd.ros2rag.compiler.Compiler'
+
+repositories {
+    jcenter()
+}
+
+buildscript {
+    repositories.jcenter()
+    dependencies {
+        classpath 'org.jastadd:jastaddgradle:1.13.3'
+    }
+}
+
+dependencies {
+    testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.0'
+    testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.4.0'
+    testCompile 'org.assertj:assertj-core:3.12.1'
+    compile "com.fasterxml.jackson.core:jackson-core:${jackson_version}"
+    compile "com.fasterxml.jackson.core:jackson-databind:${jackson_version}"
+    compile 'org.jastadd:jastadd:2.3.4'
+    runtime 'org.jastadd:jastadd:2.3.4'
+    compile group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
+    compile group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.10.0'
+    compile group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.10.0'
+}
+
+sourceSets {
+    main {
+        java.srcDir "src/gen/java"
+        java.srcDir "buildSrc/gen/java"
+    }
+}
+
+test {
+    useJUnitPlatform()
+
+    maxHeapSize = '1G'
+}
+
+jar {
+    manifest {
+        attributes "Main-Class": 'org.jastadd.ros2rag.compiler.Compiler'
+    }
+
+    from {
+        configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
+    }
+}
+
+jastadd {
+    configureModuleBuild()
+    modules {
+        //noinspection GroovyAssignabilityCheck
+        module("RelAst") {
+
+            java {
+                basedir "."
+                include "src/main/**/*.java"
+                include "src/gen/**/*.java"
+            }
+
+            jastadd {
+                basedir "src/main/jastadd/"
+                include "**/*.ast"
+                include "**/*.jadd"
+                include "**/*.jrag"
+            }
+
+            scanner {
+                include "src/main/jastadd/RelAst.flex"
+            }
+
+            parser {
+                include "src/main/jastadd/Preamble.parser"
+                include "src/main/jastadd/RelAst.parser"
+            }
+        }
+    }
+
+    cleanGen.doFirst {
+        delete "src/gen/java/org"
+        delete "src/gen-res/BuildInfo.properties"
+    }
+
+    preprocessParser.doFirst {
+
+        args += ["--no-beaver-symbol"]
+
+    }
+
+    module = "RelAst"
+
+    astPackage = 'org.jastadd.ros2rag.ast'
+
+    parser.name = 'RelAstParser'
+
+    genDir = 'src/gen/java'
+
+    buildInfoDir = 'src/gen-res'
+
+    scanner.genDir = "src/gen/java/org/jastadd/ros2rag/scanner"
+    parser.genDir = "src/gen/java/org/jastadd/ros2rag/parser"
+
+    jastaddOptions = ["--lineColumnNumbers", "--safeLazy", "--visitCheck=true", "--rewrite=cnta", "--cache=all"]
+}
+
diff --git a/src/main/jastadd/Analysis.jrag b/ros2rag.base/src/main/jastadd/Analysis.jrag
similarity index 100%
rename from src/main/jastadd/Analysis.jrag
rename to ros2rag.base/src/main/jastadd/Analysis.jrag
diff --git a/src/main/jastadd/DumpTree.jrag b/ros2rag.base/src/main/jastadd/DumpTree.jrag
similarity index 100%
rename from src/main/jastadd/DumpTree.jrag
rename to ros2rag.base/src/main/jastadd/DumpTree.jrag
diff --git a/src/main/jastadd/Errors.jrag b/ros2rag.base/src/main/jastadd/Errors.jrag
similarity index 100%
rename from src/main/jastadd/Errors.jrag
rename to ros2rag.base/src/main/jastadd/Errors.jrag
diff --git a/src/main/jastadd/Preamble.parser b/ros2rag.base/src/main/jastadd/Preamble.parser
similarity index 100%
rename from src/main/jastadd/Preamble.parser
rename to ros2rag.base/src/main/jastadd/Preamble.parser
diff --git a/src/main/jastadd/RelAst.ast b/ros2rag.base/src/main/jastadd/RelAst.ast
similarity index 100%
rename from src/main/jastadd/RelAst.ast
rename to ros2rag.base/src/main/jastadd/RelAst.ast
diff --git a/src/main/jastadd/RelAst.flex b/ros2rag.base/src/main/jastadd/RelAst.flex
similarity index 100%
rename from src/main/jastadd/RelAst.flex
rename to ros2rag.base/src/main/jastadd/RelAst.flex
diff --git a/src/main/jastadd/RelAst.parser b/ros2rag.base/src/main/jastadd/RelAst.parser
similarity index 100%
rename from src/main/jastadd/RelAst.parser
rename to ros2rag.base/src/main/jastadd/RelAst.parser
diff --git a/src/main/jastadd/Ros2Rag.ast b/ros2rag.base/src/main/jastadd/Ros2Rag.ast
similarity index 100%
rename from src/main/jastadd/Ros2Rag.ast
rename to ros2rag.base/src/main/jastadd/Ros2Rag.ast
diff --git a/src/main/jastadd/backend/AbstractGrammar.jadd b/ros2rag.base/src/main/jastadd/backend/AbstractGrammar.jadd
similarity index 100%
rename from src/main/jastadd/backend/AbstractGrammar.jadd
rename to ros2rag.base/src/main/jastadd/backend/AbstractGrammar.jadd
diff --git a/src/main/jastadd/backend/Aspect.jadd b/ros2rag.base/src/main/jastadd/backend/Aspect.jadd
similarity index 95%
rename from src/main/jastadd/backend/Aspect.jadd
rename to ros2rag.base/src/main/jastadd/backend/Aspect.jadd
index 61247c8..71491c9 100644
--- a/src/main/jastadd/backend/Aspect.jadd
+++ b/ros2rag.base/src/main/jastadd/backend/Aspect.jadd
@@ -55,11 +55,10 @@ aspect Aspect {
     // or
     topicForJoint_CurrentPosition.put(topic, target);
   }
- */
  */
   @Override
   void ReadFromMqttDefinition.generateAspect(StringBuilder sb) {
-    sb.append("public void ").append(type).append(".connectTo(String topic) {\n")
+    sb.append("public void ").append("type").append(".connectTo(String topic) {\n")
       .append(aspectIndent).append("mqttUpdater().addConnection")
       .append(getTargetType().getID()).append("_")
       .append(getTargetChild())
diff --git a/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java b/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java
similarity index 100%
rename from src/main/java/org/jastadd/ros2rag/compiler/Compiler.java
rename to ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/Compiler.java
diff --git a/src/main/java/org/jastadd/ros2rag/compiler/SimpleMain.java b/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/SimpleMain.java
similarity index 100%
rename from src/main/java/org/jastadd/ros2rag/compiler/SimpleMain.java
rename to ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/SimpleMain.java
diff --git a/src/main/java/org/jastadd/ros2rag/compiler/Utils.java b/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/Utils.java
similarity index 100%
rename from src/main/java/org/jastadd/ros2rag/compiler/Utils.java
rename to ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/Utils.java
diff --git a/src/main/java/org/jastadd/ros2rag/compiler/options/CommandLine.java b/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/options/CommandLine.java
similarity index 100%
rename from src/main/java/org/jastadd/ros2rag/compiler/options/CommandLine.java
rename to ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/options/CommandLine.java
diff --git a/src/main/java/org/jastadd/ros2rag/compiler/options/EnumOption.java b/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/options/EnumOption.java
similarity index 100%
rename from src/main/java/org/jastadd/ros2rag/compiler/options/EnumOption.java
rename to ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/options/EnumOption.java
diff --git a/src/main/java/org/jastadd/ros2rag/compiler/options/FlagOption.java b/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/options/FlagOption.java
similarity index 100%
rename from src/main/java/org/jastadd/ros2rag/compiler/options/FlagOption.java
rename to ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/options/FlagOption.java
diff --git a/src/main/java/org/jastadd/ros2rag/compiler/options/Option.java b/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/options/Option.java
similarity index 100%
rename from src/main/java/org/jastadd/ros2rag/compiler/options/Option.java
rename to ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/options/Option.java
diff --git a/src/main/java/org/jastadd/ros2rag/compiler/options/StringOption.java b/ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/options/StringOption.java
similarity index 100%
rename from src/main/java/org/jastadd/ros2rag/compiler/options/StringOption.java
rename to ros2rag.base/src/main/java/org/jastadd/ros2rag/compiler/options/StringOption.java
diff --git a/src/main/resources/log4j2.xml b/ros2rag.base/src/main/resources/log4j2.xml
similarity index 100%
rename from src/main/resources/log4j2.xml
rename to ros2rag.base/src/main/resources/log4j2.xml
diff --git a/src/test/java/org/jastadd/ros2rag/tests/RosToRagTest.java b/ros2rag.base/src/test/java/org/jastadd/ros2rag/tests/RosToRagTest.java
similarity index 100%
rename from src/test/java/org/jastadd/ros2rag/tests/RosToRagTest.java
rename to ros2rag.base/src/test/java/org/jastadd/ros2rag/tests/RosToRagTest.java
diff --git a/src/test/resources/MinimalExample.relast b/ros2rag.base/src/test/resources/MinimalExample.relast
similarity index 100%
rename from src/test/resources/MinimalExample.relast
rename to ros2rag.base/src/test/resources/MinimalExample.relast
diff --git a/ros2rag.example/.gitignore b/ros2rag.example/.gitignore
new file mode 100644
index 0000000..87b4cdd
--- /dev/null
+++ b/ros2rag.example/.gitignore
@@ -0,0 +1,5 @@
+build
+src/gen-res/
+src/gen/
+out/
+*.class
diff --git a/ros2rag.example/build.gradle b/ros2rag.example/build.gradle
new file mode 100644
index 0000000..77f4b46
--- /dev/null
+++ b/ros2rag.example/build.gradle
@@ -0,0 +1,121 @@
+apply plugin: 'jastadd'
+apply plugin: 'application'
+
+sourceCompatibility = 1.8
+
+mainClassName = 'de.tudresden.inf.st.ros2rag.example.Main'
+
+repositories {
+    jcenter()
+}
+
+buildscript {
+    repositories.jcenter()
+    dependencies {
+        classpath 'org.jastadd:jastaddgradle:1.13.3'
+    }
+}
+
+sourceSets.main.java.srcDir "src/gen/java"
+jar.manifest.attributes('Main-Class': 'de.tudresden.inf.st.ros2rag.Main')
+
+dependencies {
+    implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: "${jackson_version}"
+    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jackson_version}"
+    implementation group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
+
+    jastadd2 "org.jastadd:jastadd:2.3.4"
+}
+
+test {
+    useJUnitPlatform()
+
+    maxHeapSize = '1G'
+}
+
+jastadd {
+    configureModuleBuild()
+    modules {
+        //noinspection GroovyAssignabilityCheck
+        module("ros2rag example") {
+
+            java {
+                basedir "src/"
+                include "main/**/*.java"
+                include "gen/**/*.java"
+            }
+
+            jastadd {
+                basedir "src/"
+                include "main/jastadd/**/*.ast"
+                include "main/jastadd/**/*.jadd"
+                include "main/jastadd/**/*.jrag"
+                include "gen/jastadd/**/*.ast"
+                include "gen/jastadd/**/*.jadd"
+                include "gen/jastadd/**/*.jrag"
+            }
+
+            // scanner {
+            //     include "src/main/jastadd/RelAst.flex"
+            // }
+
+            // parser {
+            //     include "src/main/jastadd/Preamble.parser"
+            //     include "src/main/jastadd/RelAst.parser"
+            // }
+        }
+    }
+
+    cleanGen.doFirst {
+        delete "src/gen/java/org"
+        delete "src/gen-res/BuildInfo.properties"
+    }
+
+    preprocessParser.doFirst {
+
+        args += ["--no-beaver-symbol"]
+
+    }
+
+    module = "ros2rag example"
+
+    astPackage = 'de.tudresden.inf.st.ros2rag.ast'
+
+    // parser.name = 'RelAstParser'
+
+    genDir = 'src/gen/java'
+
+    buildInfoDir = 'src/gen-res'
+
+    // scanner.genDir = "src/gen/java/org/jastadd/ros2rag/scanner"
+    // parser.genDir = "src/gen/java/org/jastadd/ros2rag/parser"
+
+    // jastaddOptions = ["--lineColumnNumbers", "--visitCheck=true", "--rewrite=cnta", "--cache=all"]
+    // default options are: '--rewrite=cnta', '--safeLazy', '--visitCheck=false', '--cacheCycle=false'
+    extraJastAddOptions = ["--lineColumnNumbers", '--List=JastAddList']
+}
+
+// Input files
+def relastFiles = ["./src/main/jastadd/Example.relast"]
+
+// phase: RelAst -> JastAdd
+task relastToJastAdd(type: JavaExec) {
+    group = 'Build'
+    main = "-jar"
+
+    args(["../libs/relast.jar",
+            "--grammarName=./src/gen/jastadd/model",
+            "--useJastAddNames",
+            "--listClass=ArrayList",
+            "--jastAddList=JastAddList",
+            "--resolverHelper",
+            "--file"]
+    +
+            relastFiles)
+
+    inputs.files relastFiles
+    outputs.files file("./src/gen/jastadd/model.ast"), file("./src/gen/jastadd/model.jadd")
+}
+
+// Workflow configuration for phases
+generateAst.dependsOn relastToJastAdd
diff --git a/ros2rag.example/hpps.build.gradle b/ros2rag.example/hpps.build.gradle
new file mode 100644
index 0000000..80a1c4a
--- /dev/null
+++ b/ros2rag.example/hpps.build.gradle
@@ -0,0 +1,145 @@
+// General configuration (plugins, settings, dependencies)
+
+buildscript {
+    repositories.mavenLocal()
+    repositories.mavenCentral()
+    dependencies {
+        classpath group: 'org.jastadd', name: 'jastaddgradle', version: '1.13.3'
+    }
+}
+
+plugins {
+    id 'java'
+    id 'application'
+    id 'idea'
+    id 'jacoco'
+}
+
+apply plugin: 'jastadd'
+
+group 'de.tudresden.inf.st'
+version '0.1'
+
+sourceCompatibility = 1.8
+
+repositories.mavenCentral()
+
+idea.module.generatedSourceDirs += file('src/gen/java')
+
+configurations {
+    ragdoc
+}
+
+sourceSets.main.java.srcDir "src/gen/java"
+jar.manifest.attributes('Main-Class': 'de.tudresden.inf.st.hybridpps.Main')
+
+dependencies {
+    implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-xml', version: "${jackson_version}"
+    implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jackson_version}"
+    implementation group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
+
+    jastadd2 "org.jastadd:jastadd:2.3.4"
+    ragdoc files('../libs/rd-builder.jar')
+}
+
+test {
+    testLogging {
+        events "passed", "skipped", "failed"
+        exceptionFormat "full"
+    }
+}
+
+jacocoTestReport {
+    reports {
+        xml.enabled true
+        html.enabled false
+    }
+}
+
+run {
+    mainClassName = 'de.tudresden.inf.st.hybridpps.Main'
+//    standardInput = System.in
+}
+run.enabled = false
+
+// Input files
+def relastFiles = ["./src/main/jastadd/problem.relast", "./src/main/jastadd/solution.relast"]
+
+// phase: RelAst -> JastAdd
+task relastToJastAdd(type: JavaExec) {
+    group = 'Build'
+    main = "-jar"
+
+    args(["../libs/relast.jar",
+            "--grammarName=./src/gen/jastadd/model",
+            "--useJastAddNames",
+            "--listClass=ArrayList",
+            "--jastAddList=JastAddList",
+            "--resolverHelper",
+            "--file"]
+    +
+            relastFiles)
+
+    inputs.files relastFiles
+    outputs.files file("./src/gen/jastadd/model.ast"), file("./src/gen/jastadd/model.jadd")
+}
+
+// phase: JastAdd -> Java (using JastAdd Gradle plugin)
+jastadd {
+    configureModuleBuild()
+    modules {
+        module("hybridpps") {
+
+            java {
+                basedir "src/"
+                include "main/**/*.java"
+                include "gen/**/*.java"
+            }
+
+            jastadd {
+                basedir "src/"
+                include "main/jastadd/**/*.ast"
+                include "main/jastadd/**/*.jadd"
+                include "main/jastadd/**/*.jrag"
+                include "gen/jastadd/**/*.ast"
+                include "gen/jastadd/**/*.jadd"
+                include "gen/jastadd/**/*.jrag"
+            }
+
+            scanner {
+                include "src/main/jastadd/HybridPPSModelScanner.flex"
+            }
+
+            parser {
+                include "src/main/jastadd/HybridPPSModelParser.parser"
+            }
+        }
+    }
+
+    cleanGen.doFirst {
+        delete "src/gen/java/de"
+        delete "src/gen-res/BuildInfo.properties"
+    }
+
+    module = "hybridpps"
+
+    astPackage = 'de.tudresden.inf.st.hybridpps.jastadd.model'
+
+    parser.name = 'HybridPPSModelParser'
+
+    genDir = 'src/gen/java'
+
+    buildInfoDir = 'src/gen-res'
+
+    scanner.genDir = "src/gen/java/de/tudresden/inf/st/hybridpps/jastadd/scanner"
+    parser.genDir = "src/gen/java/de/tudresden/inf/st/hybridpps/jastadd/parser"
+
+//  default options are: '--rewrite=cnta', '--safeLazy', '--visitCheck=false', '--cacheCycle=false'
+    extraJastAddOptions = ['--List=JastAddList']
+}
+
+// Workflow configuration for phases
+generateAst.dependsOn relastToJastAdd
+
+//// always run jastadd
+//jastadd.outputs.upToDateWhen {false}
diff --git a/ros2rag.example/src/main/jastadd/Example.relast b/ros2rag.example/src/main/jastadd/Example.relast
new file mode 100644
index 0000000..7b83143
--- /dev/null
+++ b/ros2rag.example/src/main/jastadd/Example.relast
@@ -0,0 +1,15 @@
+Model ::= RobotArm ZoneModel ;
+
+ZoneModel ::= Size:Position SafetyZone:Zone*;
+
+Zone ::= Position*;
+
+// Do not use terminal-NTA's for now, as relast has problems with it "/<ShouldUseLowSpeed:Boolean>/" ;
+RobotArm ::= Joint* EndEffector ;
+
+Joint ::= <Name> ;
+rel Joint.CurrentPosition -> Position ;
+
+EndEffector : Joint;
+
+Position ::= <x:int> <y:int> <z:int> ;
diff --git a/ros2rag.example/src/main/java/de/tudresden/inf/st/ros2rag/example/Main.java b/ros2rag.example/src/main/java/de/tudresden/inf/st/ros2rag/example/Main.java
new file mode 100644
index 0000000..c5b575d
--- /dev/null
+++ b/ros2rag.example/src/main/java/de/tudresden/inf/st/ros2rag/example/Main.java
@@ -0,0 +1,12 @@
+package de.tudresden.inf.st.ros2rag.example;
+
+/**
+ * Testing Ros2Rag without generating something.
+ *
+ * @author rschoene - Initial contribution
+ */
+public class Main {
+  public static void main(String[] args) {
+    System.out.println("Hello");
+  }
+}
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..584ff30
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,4 @@
+rootProject.name = 'ros2rag'
+
+include 'ros2rag.base'
+include 'ros2rag.example'
-- 
GitLab