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

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

    provided project(':tapestry-test')

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

    api "javax.inject:javax.inject:1"
    api "javax.annotation:javax.annotation-api:1.3.2"

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

    testImplementation "commons-lang:commons-lang:2.6"
    testImplementation "org.apache.commons:commons-lang3:3.4"
    
    testImplementation "org.apache.commons:commons-lang3:3.4"
    testImplementation "org.hibernate:hibernate-core:5.2.10.Final"
    testRuntimeOnly "org.hsqldb:hsqldb:2.2.8"
    
    testImplementation "org.junit.jupiter:junit-jupiter:${versions.junitJupiter}"
    
    provided "org.testng:testng:${versions.testng}", { transitive = false }
}

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