import org.gradle.plugins.ide.idea.model.*
import t5build.*

description = "Fast class property discovery, reading and writing library based on bytecode generation. Extracted from Apache Tapestry, but not dependent on the Web framework (tapestry-core) nor the IoC one (tapestry-ioc)."

//apply plugin: JavaPlugin
apply plugin: 'antlr'

buildDir = 'target/gradle-build'

dependencies {
    compile project(":plastic")
    compile project(":tapestry5-annotations")
    compile project(":commons")
    compile "org.slf4j:slf4j-api:${versions.slf4j}"

    // ANTLR tool path used with the generateGrammarSource task
    antlr "org.antlr:antlr:3.5.2"

    // Transitive will bring in the unwanted string template library as well
    compile "org.antlr:antlr-runtime:3.5.2", {
        exclude group: "org.antlr", module: "stringtemplate"
    }

    testCompile "org.testng:testng:${versions.testng}", { transitive = false }
}

clean.delete generateGrammarSource.outputDirectory

compileJava {
    options.fork(memoryMaximumSize: '512m')
}