Skip to content
Snippets Groups Projects
Select Git revision
  • c488983e798f0fa53992b223334cfbc516d5ba16
  • main default protected
  • devel2
  • release
  • devel
5 results

TaskAndTimeTimJahn.txt

Blame
  • 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}