Select Git revision
build.gradle 4.63 KiB
// General configuration (plugins, settings, dependencies)
group 'de.tudresden.inf.st'
version '0.1'
apply plugin: 'java'
apply plugin: 'jastadd'
apply plugin: 'application'
apply plugin: "idea"
buildscript {
repositories.mavenCentral()
dependencies {
classpath group: 'org.jastadd', name: 'jastaddgradle', version: '1.13.3'
}
}
configurations {
ragdoc
}
File genSrc = file("src/gen/java")
idea.module.generatedSourceDirs += genSrc
sourceSets.main.java.srcDir genSrc
jar {
from { sourceSets.main.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } }
manifest.attributes('Main-Class': 'de.tudresden.inf.st.statemachine.Main')
}
dependencies {
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: "${jackson_version}"
implementation group: 'net.sf.beaver', name: 'beaver-rt', version: '0.9.11'
implementation group: 'de.tudresden.inf.st', name: 'dumpAstWithPlantuml', version: '0.3.5'
jastadd2 "org.jastadd:jastadd:2.3.4"
ragdoc files('../libs/rd-builder-1.3.0.jar')
}
// Default run configuration
run {
mainClassName = 'de.tudresden.inf.st.statemachine.Main'
}
// Generated files
def ecoreFile = "./src/main/resources/Example.relast"
def relastFile = "./src/gen/jastadd/Example.relast"
// First phase: Ecore -> RelAst
task ecoreToRelast(type: JavaExec) {
group = 'Build'
main = "-jar"
doFirst {
delete "src/gen/jastadd"
mkdir "src/gen/jastadd"
}
//args "../libs/ecore2relast-0.1.jar", ecoreFile, relastFile
args "../libs/RoleRag-0.2.0.jar", "--inputBaseDir=C:/Users/Ronny/IdeaProjects/bank/statemachine.solution/src/main/resources",
"--outputBaseDir=C:/Users/Ronny/IdeaProjects/bank/statemachine.solution/src/gen/jastadd", "Example.relast"
inputs.files file(ecoreFile)
outputs.files file(relastFile)
}
task('ragdoc-java-8', type: JavaExec, group: 'documentation') {
description 'Generates RagDoc metadata for this JastAdd project.'
inputs.files {
sourceSets.main.allJava.files
}
main = 'org.extendj.ragdoc.RagDocBuilder'
doFirst {
def destDir = new File(docsDir, 'ragdoc')
if (!destDir.isDirectory()) {
destDir.mkdirs()
}
classpath = configurations.ragdoc
def sourceFiles = sourceSets.main.allJava.files
args(['-d', "$destDir",
'-bootclasspath', '/usr/lib/jvm/java-1.8.0/jre/lib/rt.jar',
] + sourceFiles)
}
}
// Second phase: RelAst -> JastAdd
task relastToJastAdd(type: JavaExec) {
group = 'Build'
main = "-jar"
args "../libs/relast.jar",
"--grammarName=./src/gen/jastadd/StateMachine",
"--useJastAddNames",
"--listClass=ArrayList",
"--jastAddList=JastAddList",
"--resolverHelper",
"--file",
relastFile
inputs.files relastFile
outputs.files file("./src/gen/jastadd/StateMachine.ast"), file("./src/gen/jastadd/StateMachine.jadd")
}
// Third phase: JastAdd -> Java (using JastAdd Gradle plugin)
jastadd {
configureModuleBuild()
modules {
module("statemachine") {
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/StateMachineScanner.flex"
}
parser {
include "src/main/jastadd/StateMachineParser.parser"
}
}
}
cleanGen.doFirst {
delete "src/gen/java/de"
delete "src/gen-res/BuildInfo.properties"
}
module = "statemachine"
astPackage = 'de.tudresden.inf.st.statemachine.jastadd.model'
parser.name = 'StateMachineParser'
genDir = 'src/gen/java'
buildInfoDir = 'src/gen-res'
scanner.genDir = "src/gen/java/de/tudresden/inf/st/statemachine/jastadd/scanner"
parser.genDir = "src/gen/java/de/tudresden/inf/st/statemachine/jastadd/parser"
// default options are: '--rewrite=cnta', '--safeLazy', '--visitCheck=false', '--cacheCycle=false'
extraJastAddOptions = ['--List=JastAddList', '--incremental=param']
}
// Workflow configuration for phases
relastToJastAdd.dependsOn ecoreToRelast
generateAst.dependsOn relastToJastAdd
//// always run jastadd
//jastadd.outputs.upToDateWhen {false}