Skip to content
Snippets Groups Projects
Select Git revision
  • b32d68ff8e647f74a938cd0d974dd835f0e2c83c
  • main default protected
  • devel
  • v0.4
  • v0.3
  • v0.2
  • v0.1
7 results

build.gradle

Blame
  • build.gradle 4.97 KiB
    // General configuration (plugins, settings, dependencies)
    group 'de.tudresden.inf.st'
    version '0.1'
    
    apply plugin: 'java'
    apply plugin: 'java-library'
    apply plugin: 'jastadd'
    apply plugin: 'application'
    apply plugin: "idea"
    apply plugin: 'java-library'
    
    sourceCompatibility = 1.8
    targetCompatibility = 1.8
    
    repositories.mavenCentral()
    
    buildscript {
        repositories.mavenCentral()
        dependencies {
            classpath group: 'org.jastadd', name: 'jastaddgradle', version: '1.13.3'
        }
    }
    
    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 {
        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: 'org.slf4j', name: 'slf4j-api', version: '1.7.30'
        implementation group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.13.2'
        implementation group: 'org.fusesource.mqtt-client', name: 'mqtt-client', version: '1.15'
    
        // pnml lib
        implementation group: 'org.eclipse.emf', name: 'org.eclipse.emf.ecore', version: '2.12.0'
        implementation group: 'org.eclipse.emf', name: 'org.eclipse.emf.ecore.xmi', version: '2.12.0'
        implementation group: 'org.eclipse.emf', name: 'org.eclipse.emf.common', version: '2.12.0'
        implementation group: 'org.eclipse.emf', name: 'org.eclipse.emf.mwe.core', version: '1.3.13'
        api group: 'fr.lip6.pnml', name: 'fr.lip6.pnml.framework.ptnet', version: '2.2.12'
        api group: 'fr.lip6.pnml', name: 'fr.lip6.pnml.framework.utils', version: '2.2.12'
        implementation group: 'org.apache.ws.commons.axiom', name: 'axiom-api', version: '1.2.22'
        implementation group: 'org.apache.ws.commons.axiom', name: 'axiom-impl', version: '1.2.22'
        implementation group: 'com.thaiopensource', name: 'jing', version: '20091111'
        implementation 'org.jetbrains:annotations:19.0.0'
        // https://mvnrepository.com/artifact/xalan/xalan
        implementation group: 'xalan', name: 'xalan', version: '2.7.2'
    
    
        compile group: 'org.apache.commons', name: 'commons-lang3', version: '3.0'
    
        jastadd2 "org.jastadd:jastadd:2.3.4"
    }
    
    // Default run configuration
    run {
        mainClassName = 'de.tudresden.inf.st.pnml.Main'
        standardInput = System.in
    }
    
    // Generated files
    def ecoreFile = "./src/main/resources/placeTransition.ecore"
    def relastAspect = "./src/gen/jastadd/pnml/placeTransition.ecore.jadd"
    def relastFile = "./src/gen/jastadd/pnml/placeTransition.relast"
    
    // First phase: Ecore -> RelAst
    task ecoreToRelast(type: JavaExec) {
        group = 'Build'
        main = "-jar"
    
    
        doFirst {
            delete "src/gen/jastadd"
            mkdir "src/gen/jastadd/pnml"
        }
    
        args "libs/ecore2relast-0.1.jar", ecoreFile, relastFile
    
        inputs.files file(ecoreFile)
        outputs.files file(relastFile), file(relastAspect)
    }
    
    // Second phase: RelAst -> JastAdd
    task relastToJastAdd(type: JavaExec) {
        group = 'Build'
        main = "-jar"
    
        args "libs/relast.jar",
                "--grammarName=./src/gen/jastadd/placeTransition",
                "--useJastAddNames",
                "--listClass=ArrayList",
                "--jastAddList=JastAddList",
                "--resolverHelper",
                "--file",
                relastFile,
                "./src/main/jastadd/marking/Marking.relast",
                "./src/main/jastadd/io/IoPN.relast"
    }
    
    // Third phase: JastAdd -> Java (using JastAdd Gradle plugin)
    jastadd {
        configureModuleBuild()
        modules {
            module("pnml") {
    
                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/PnmlScanner.flex"
                }
    
                parser {
                    include "src/main/jastadd/PnmlParser.parser"
                }
            }
        }
    
        cleanGen.doFirst {
            delete "src/gen/java/de"
            delete "src/gen-res/BuildInfo.properties"
        }
    
        module = "pnml"
    
        astPackage = 'de.tudresden.inf.st.pnml.jastadd.model'
    
        genDir = 'src/gen/java'
    
        buildInfoDir = 'src/gen-res'
    
        scanner.genDir = "src/gen/java/de/tudresden/inf/st/pnml/jastadd/scanner"
        parser.genDir = "src/gen/java/de/tudresden/inf/st/pnml/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}