description = "A code-centric, high-performance, simple Inversion of Control container"

dependencies {
    compile project(':tapestry-func')
    compile project(':tapestry5-annotations')
    compile project(":plastic")
    compile project(":beanmodel")

    provided project(':tapestry-test')

    // For now, keep these compile dependencies synchronized with the binaries dependencies
    // of the top-level build:

    compile "javax.inject:javax.inject:1"

    compile "org.slf4j:slf4j-api:${versions.slf4j}"

    testCompile "org.apache.commons:commons-lang3:3.4"
    testCompile "org.hibernate:hibernate-core:5.2.10.Final"
    testRuntime "org.hsqldb:hsqldb:2.2.8"
    
    provided "org.testng:testng:${versions.testng}", { transitive = false }
}

test {
    useJUnit()
    // Override the master build.gradle
    systemProperties.remove("tapestry.service-reloading-enabled")
}