diff --git a/buildSrc/src/main/groovy/relast2uml.java-jastadd-conventions.gradle b/buildSrc/src/main/groovy/relast2uml.java-jastadd-conventions.gradle
index 99218f1be8bd04d2af5fcd8a4c70b251ae1c525a..d773a87cb157572d2712c04e39b91ad4a4169c0b 100644
--- a/buildSrc/src/main/groovy/relast2uml.java-jastadd-conventions.gradle
+++ b/buildSrc/src/main/groovy/relast2uml.java-jastadd-conventions.gradle
@@ -6,3 +6,7 @@ plugins {
 dependencies {
   api group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
 }
+
+File genSrc = file("src/gen/java")
+sourceSets.main.java.srcDir genSrc
+idea.module.generatedSourceDirs += genSrc
diff --git a/buildSrc/src/main/groovy/relast2uml.java-publishing-conventions.gradle b/buildSrc/src/main/groovy/relast2uml.java-publishing-conventions.gradle
index a161f5222cd3c407c9bc5059cece73b2670eb407..0a5d763501b81b682a8a37c30e0282ff5f378b2d 100644
--- a/buildSrc/src/main/groovy/relast2uml.java-publishing-conventions.gradle
+++ b/buildSrc/src/main/groovy/relast2uml.java-publishing-conventions.gradle
@@ -15,20 +15,46 @@ dependencies {
   testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "${jupiter_version}"
 }
 
-tasks.named('test') {
-  useJUnitPlatform()
+jar {
+  from {
+    configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+  }
+}
+
+def versionFile = "src/main/resources/${project.getName()}Version.properties"
+def oldProps = new Properties()
+
+try {
+  file(versionFile).withInputStream { stream -> oldProps.load(stream) }
+  version = oldProps['version']
+} catch (e) {
+  // this happens, if either the properties file is not present, or cannot be read from
+  throw new GradleException("File ${versionFile} not found or unreadable. Aborting.", e)
+}
+
+task printVersion() {
+  doLast {
+    println(version)
+  }
+}
+
+task newVersion() {
+  doFirst {
+    def props = new Properties()
+    props['version'] = value
+    props.store(file(versionFile).newWriter(), null)
+  }
 }
 
 //679
 publishing {
   publications {
     maven(MavenPublication) {
-//      artifactId = 'dumpAst | dumpAstWithPlantuml | grammar2uml'
       groupId = 'de.tudresden.inf.st'
-      from components.java
-//            artifact("build/libs/ragconnect-${version}.jar") {
-//                extension 'jar'
-//            }
+//      from components.java
+      artifact("build/libs/${project.getName()}-${project.getVersion()}.jar") {
+          extension 'jar'
+      }
     }
   }
   repositories {
diff --git a/dumpAst/build.gradle b/dumpAst/build.gradle
index fed51c24c2a36ce7a0b8ded6d3994039453aadc2..b6793149b06ba134d59ad0886d55eda83be58b20 100644
--- a/dumpAst/build.gradle
+++ b/dumpAst/build.gradle
@@ -18,37 +18,6 @@ dependencies {
     implementation group: 'com.github.spullara.mustache.java', name: 'compiler', version: "${mustache_java_version}"
 }
 
-def versionFile = 'src/main/resources/dumpAstVersion.properties'
-def oldProps = new Properties()
-
-try {
-    file(versionFile).withInputStream { stream -> oldProps.load(stream) }
-    version = oldProps['version']
-} catch (e) {
-    // this happens, if either the properties file is not present, or cannot be read from
-    throw new GradleException("File ${versionFile} not found or unreadable. Aborting.", e)
-}
-
-task newVersion() {
-    doFirst {
-        def props = new Properties()
-        props['version'] = value
-        props.store(file(versionFile).newWriter(), null)
-    }
-}
-
-jar {
-    from {
-        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
-    }
-
-    archiveBaseName = 'dumpAst'
-}
-
-File genSrc = file("src/gen/java")
-sourceSets.main.java.srcDir genSrc
-idea.module.generatedSourceDirs += genSrc
-
 File dumpAstGrammar = file('./src/main/jastadd/DumpAst.relast')
 File mustacheGrammar = file('./src/main/jastadd/mustache/Mustache.relast')
 
diff --git a/dumpAstWithPlantuml/build.gradle b/dumpAstWithPlantuml/build.gradle
index 9105efcaeb2c6bc166a140f04a98e53d2c787063..03e3324a59b067b1c8f45dc1f7b44975194b779e 100644
--- a/dumpAstWithPlantuml/build.gradle
+++ b/dumpAstWithPlantuml/build.gradle
@@ -19,32 +19,6 @@ dependencies {
     implementation group: 'com.github.spullara.mustache.java', name: 'compiler', version: "${mustache_java_version}"
 }
 
-def versionFile = '../dumpAst/src/main/resources/dumpAstVersion.properties'
-def oldProps = new Properties()
-
-try {
-    file(versionFile).withInputStream { stream -> oldProps.load(stream) }
-    version = oldProps['version']
-} catch (e) {
-    // this happens, if either the properties file is not present, or cannot be read from
-    throw new GradleException("File ${versionFile} not found or unreadable. Aborting.", e)
-}
-
-jar {
-    from {
-        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
-    }
-
-    archiveBaseName = 'dumpAst-plantuml'
-}
-
-// include resources of base dumpAst
-sourceSets.main.resources.srcDirs += "../dumpAst/src/main/resources"
-
-File genSrc = file("src/gen/java")
-sourceSets.main.java.srcDir genSrc
-idea.module.generatedSourceDirs += genSrc
-
 File dumpAstGrammar = file('../dumpAst/src/main/jastadd/DumpAst.relast')
 
 task relast(type: JavaExec) {
diff --git a/dumpAstWithPlantuml/src/main/resources/dumpAstWithPlantumlVersion.properties b/dumpAstWithPlantuml/src/main/resources/dumpAstWithPlantumlVersion.properties
new file mode 120000
index 0000000000000000000000000000000000000000..19186b38f76bfc2fb8f855e0c5bafe020db4bae4
--- /dev/null
+++ b/dumpAstWithPlantuml/src/main/resources/dumpAstWithPlantumlVersion.properties
@@ -0,0 +1 @@
+../../../../dumpAst/src/main/resources/dumpAstVersion.properties
\ No newline at end of file
diff --git a/grammar2uml/build.gradle b/grammar2uml/build.gradle
index c13cd21e8298b8963c07a7ce47201f481717dbfe..78152a3d533446575bcc0a3e5a3e950100034a61 100644
--- a/grammar2uml/build.gradle
+++ b/grammar2uml/build.gradle
@@ -16,49 +16,19 @@ apply plugin: 'jastadd'
 
 application.mainClassName = 'de.tudresden.inf.st.jastadd.grammar2uml.compiler.Compiler'
 
-dependencies {
-    implementation project(':relast.preprocessor')
-
-    implementation group: 'com.github.spullara.mustache.java', name: 'compiler', version: "${mustache_java_version}"
-    runtime group: 'org.jastadd', name: 'jastadd', version: '2.3.4'
-}
-
-def versionFile = 'src/main/resources/grammar2umlVersion.properties'
-def oldProps = new Properties()
-
-try {
-    file(versionFile).withInputStream { stream -> oldProps.load(stream) }
-    version = oldProps['version']
-} catch (e) {
-    // this happens, if either the properties file is not present, or cannot be read from
-    throw new GradleException("File ${versionFile} not found or unreadable. Aborting.", e)
-}
-
-task newVersion() {
-    doFirst {
-        def props = new Properties()
-        props['version'] = value
-        props.store(file(versionFile).newWriter(), null)
-    }
-}
-
 jar {
     manifest {
         attributes "Main-Class": application.mainClassName
     }
+}
 
-    from {
-        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
-        // configurations.compile.collect { it.isDirectory() ? it : zipTree(it) }
-    }
+dependencies {
+    implementation project(':relast.preprocessor')
 
-    archiveBaseName = 'grammar2uml'
+    implementation group: 'com.github.spullara.mustache.java', name: 'compiler', version: "${mustache_java_version}"
+    runtime group: 'org.jastadd', name: 'jastadd', version: '2.3.4'
 }
 
-File genSrc = file("src/gen/java")
-sourceSets.main.java.srcDir genSrc
-idea.module.generatedSourceDirs += genSrc
-
 File preprocessorGrammar = file('../relast.preprocessor/src/main/jastadd/RelAst.relast')
 File grammar2umlGrammar = file('./src/main/jastadd/Grammar2Uml.relast')
 File intermediateGrammar = file('./src/main/jastadd/MustacheNodes.relast')
diff --git a/testDumper/build.gradle b/testDumper/build.gradle
index b8622c70275eeea58e4f46c06eddf10b3b052d01..1c0603dc55c06e22ddea0a727ea178102ece369a 100644
--- a/testDumper/build.gradle
+++ b/testDumper/build.gradle
@@ -16,10 +16,6 @@ dependencies {
     testImplementation project(':dumpAst')
 }
 
-File genSrc = file("src/gen/java")
-sourceSets.main.java.srcDir genSrc
-idea.module.generatedSourceDirs += genSrc
-
 File testingGrammar = file('./src/main/jastadd/testDumper.relast')
 
 task relast(type: JavaExec) {