Select Git revision
build.gradle
-
René Schöne authoredRené Schöne authored
build.gradle 7.75 KiB
plugins {
id 'java'
id 'application'
id 'idea'
id 'org.jastadd' version "${jastaddgradle_version}"
id "com.google.protobuf" version "${protobuf_plugin_version}"
}
group 'de.tudresden.inf.st'
ext {
mainClassName = 'de.tudresden.inf.st.mg.Main'
}
// set the main class name for `gradle run`
application.mainClass = "${mainClassName}"
java.toolchain.languageVersion = JavaLanguageVersion.of(11)
protobuf {
protoc {
// The artifact spec for the Protobuf Compiler
artifact = "com.google.protobuf:protoc:${protobuf_version}"
}
}
repositories {
mavenCentral()
maven {
name 'gitlab-maven'
url 'https://git-st.inf.tu-dresden.de/api/v4/groups/jastadd/-/packages/maven'
}
}
configurations {
// add a configuration to store the grammar printing dependency in
grammar2uml
relast
ragconnect
}
File genSrc = file("src/gen/java")
idea.module.generatedSourceDirs += genSrc
sourceSets.main.java.srcDir genSrc
dependencies {
implementation group: 'de.tudresden.inf.st', name: 'dumpAst', version: "${dumpAst_version}"
grammar2uml group: 'de.tudresden.inf.st', name: 'grammar2uml', version: "${grammar2uml_version}"
relast group: 'org.jastadd', name: 'relast', version: "${relast_version}"
testImplementation group: 'org.assertj', name: 'assertj-core', version: "${assertj_version}"
testImplementation group: 'org.junit.jupiter', name: 'junit-jupiter-api', version: "${jupyter_version}"
testRuntimeOnly group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "${jupyter_version}"
implementation group: 'io.javalin', name: 'javalin', version: "${javalin_version}"
implementation group: 'org.json', name: 'json', version: '20220320'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.13.3'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-core', version: '2.13.3'
implementation group: 'com.fasterxml.jackson.dataformat', name: 'jackson-dataformat-yaml', version: '2.13.3'
implementation group: 'org.slf4j', name: 'slf4j-simple', version: '1.7.31'
ragconnect group: 'de.tudresden.inf.st', name: 'ragconnect', version: '1.0.0'
jastadd2 "org.jastadd:jastadd2:2.3.5-dresden-6"
implementation group: 'com.google.protobuf', name: 'protobuf-java', version: "${protobuf_version}"
implementation group: 'com.google.protobuf', name: 'protobuf-java-util', version: "${protobuf_version}"
implementation group: 'org.fusesource.mqtt-client', name: 'mqtt-client', version: '1.15'
}
def versionFile = 'src/main/resources/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)
}
}
test {
testLogging.showStandardStreams = true
useJUnitPlatform()
}
jar {
manifest {
attributes 'Main-Class': "${mainClassName}"
}
from {
configurations.runtimeClasspath.collect { return (it.isDirectory() ? it : zipTree(it)) }
}
duplicatesStrategy = DuplicatesStrategy.WARN
}
def relastFiles = ['./src/gen/jastadd/MotionGrammar.relast', './src/main/jastadd/load/LoadWorld.relast', './src/gen/jastadd/RobotWorld.relast', './src/main/jastadd/load/LoadUnload.relast', './src/main/jastadd/cleanup/Cleanup.relast']
def loadingRelastFiles = ['./src/main/jastadd/common/MotionGrammar.relast', './src/main/jastadd/load/LoadWorld.relast', './src/main/jastadd/load/LoadUnload.relast']
def cleaningRelastFiles = ['./src/main/jastadd/common/MotionGrammar.relast', './src/main/jastadd/cleanup/RobotWorld.relast', './src/main/jastadd/cleanup/Cleanup.relast']
def grammarPrefix = './src/gen/jastadd/MotionGrammar'
def loadingGrammarDiagramFile = './src/gen/resources/diagrams/grammar/loading.png'
def cleaningGrammarDiagramFile = './src/gen/resources/diagrams/grammar/cleaning.png'
def jastAddListName = 'JastAddList'
// phases: ragConnect -> RelAst -> JastAdd
// phase: ragConnect
task ragConnect(type: JavaExec) {
group = 'Build'
main = 'org.jastadd.ragconnect.compiler.Compiler'
classpath = configurations.ragconnect
args([
'--o=src/gen/jastadd',
'./src/main/jastadd/common/MotionGrammar.relast',
'./src/main/jastadd/cleanup/RobotWorld.relast',
'./src/main/jastadd/cleanup/RobotWorld.connect',
// '--logReads',
// '--logWrites',
// '--logIncremental',
// '--verbose',
'--rootNode=RobotWorld',
'--protocols=mqtt',
"--List=${jastAddListName}",
'--experimental-jastadd-329',
'--incremental=param',
'--tracing=cache,flush',
'--evaluationCounter'
])
}
task generateLoadingGrammarDiagrams(type: JavaExec) {
group = 'Documentation'
classpath = configurations.grammar2uml
mainClass = 'de.tudresden.inf.st.jastadd.grammar2uml.compiler.Compiler'
args "--output=${loadingGrammarDiagramFile}", '--defaultFolders'
args loadingRelastFiles
inputs.files loadingRelastFiles
outputs.files file(cleaningGrammarDiagramFile)
}
task generateCleaningGrammarDiagrams(type: JavaExec) {
group = 'Documentation'
classpath = configurations.grammar2uml
mainClass = 'de.tudresden.inf.st.jastadd.grammar2uml.compiler.Compiler'
args "--output=${cleaningGrammarDiagramFile}", '--defaultFolders'
args cleaningRelastFiles
inputs.files cleaningRelastFiles
outputs.files file(cleaningGrammarDiagramFile)
}
task relastToJastAdd(type: JavaExec) {
group = 'Build'
classpath = configurations.relast
mainClass = 'org.jastadd.relast.compiler.Compiler'
args "--grammarName=${grammarPrefix}",
'--useJastAddNames',
'--listClass=java.util.ArrayList',
"--jastAddList=${jastAddListName}",
'--resolverHelper',
'--file',
'--serializer=jackson'
args relastFiles
inputs.files relastFiles
outputs.files file("${grammarPrefix}.ast"), file("${grammarPrefix}.jadd")
}
jastadd {
configureModuleBuild()
modules {
//noinspection GroovyAssignabilityCheck
module('mg') {
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'
}
}
}
cleanGen.doFirst {
delete 'src/gen/'
delete 'src/gen-res/'
}
module = 'mg'
astPackage = 'de.tudresden.inf.st.mg.jastadd.model'
genDir = 'src/gen/java'
buildInfoDir = 'src/gen-res'
// default options are: '--rewrite=cnta', '--safeLazy', '--visitCheck=false', '--cacheCycle=false'
extraJastAddOptions = ["--List=${jastAddListName}",
"--flush=api",
"--incremental=param,debug",
"--tracing=cache,flush"]
}
// Workflow configuration for phases
clean.dependsOn cleanGen
generateAst.dependsOn relastToJastAdd
generateAst.dependsOn generateLoadingGrammarDiagrams, generateCleaningGrammarDiagrams
relastToJastAdd.dependsOn ragConnect