Skip to content
Snippets Groups Projects
Select Git revision
  • main default protected
  • feature/waiting
  • feature/control
  • feature/tracing
  • feature/demo
  • wip
6 results

build.gradle

Blame
  • build.gradle 2.64 KiB
    plugins {
        id "java"
        id "application"
        id "idea"
        id "org.jastadd" version "1.14.5"
    }
    
    // General configuration (plugins, settings, dependencies)
    group 'de.tudresden.inf.st'
    version '0.1'
    
    
    sourceCompatibility = 11
    targetCompatibility = 11
    
    repositories.mavenCentral()
    repositories {
        maven {
            name "gitlab-maven"
            url "https://git-st.inf.tu-dresden.de/api/v4/groups/jastadd/-/packages/maven"
        }
    }
    
    idea.module.generatedSourceDirs += file('src/gen/java')
    
    sourceSets.main.java.srcDir "src/gen/java"
    jar.manifest.attributes('Main-Class': 'de.tudresden.inf.st.pnml.Main')
    
    dependencies {
        jastadd2 "org.jastadd:jastadd:2.3.5"
        implementation group: 'de.tudresden.inf.st', name: 'dumpAstWithPlantuml', version: '0.3.5'
    }
    
    // Default run configuration
    run {
        mainClassName = 'de.tudresden.inf.st.mg.Main'
        standardInput = System.in
    }
    
    def relastFile = "./src/main/jastadd/MotionGrammar.relast"
    
    // Second phase: RelAst -> JastAdd
    task relastToJastAdd(type: JavaExec) {
        group = 'Build'
        main = "-jar"
    
        args "libs/relast.jar",
                "--grammarName=./src/gen/jastadd/MotionGrammar",
                "--useJastAddNames",
                "--listClass=java.util.ArrayList",
                "--jastAddList=JastAddList",
                "--resolverHelper",
                "--file",
                relastFile
    
        inputs.files relastFile
        outputs.files file("./src/gen/jastadd/MotionGrammar.ast"), file("./src/gen/jastadd/MotionGrammar.jadd")
    }
    
    // Third phase: JastAdd -> Java (using JastAdd Gradle plugin)
    jastadd {
        configureModuleBuild()
        modules {
            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/java/de"
            delete "src/gen-res/BuildInfo.properties"
        }
    
        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=JastAddList'] // '--incremental=param'
    }
    
    // Workflow configuration for phases
    generateAst.dependsOn relastToJastAdd
    
    //// always run jastadd
    //jastadd.outputs.upToDateWhen {false}