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"
    // TAP5-2677: Missing dependency for Java 11.
    // To match 5.7 it's compile, even though it's runtime
    if (JavaVersion.current() >= JavaVersion.VERSION_11) {
        compile "javax.annotation:javax.annotation-api:1.3.2"
    }

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

    testCompile "commons-lang:commons-lang:2.6"
    testCompile "org.apache.commons:commons-lang3:3.4"
    
    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")
}