import org.gradle.internal.jvm.Jvm

sourceSets {
    taglet
    tagletJdk11
}

dependencies {
    implementation  group: 'junit', name: 'junit', version: '4.13.2'
    implementation project(':javacutil')
    implementation project(':checker-qual')

    implementation 'org.plumelib:plume-util:1.5.3'

    if (Jvm.current().toolsJar) {
        tagletImplementation files(Jvm.current().toolsJar)
    }
}

jar.archiveBaseName = 'framework-test'

apply from: rootProject.file("gradle-mvn-push.gradle")

/** Adds information to the publication for uploading to Maven repositories. */
final frameworkTest(publication) {
    sharedPublicationConfiguration(publication)
    publication.from components.java
    publication.pom {
        name = 'Checker Framework Testing Library'
        description = 'framework-test contains utility classes for testing type-checkers\n' +
                'that are built on the Checker Framework.'
        licenses {
            license {
                name = 'GNU General Public License, version 2 (GPL2), with the classpath exception'
                url = 'http://www.gnu.org/software/classpath/license.html'
                distribution = 'repo'
            }
        }
    }
}
publishing {
    publications {
        frameworkTest(MavenPublication) {
            frameworkTest it
        }
    }
}
signing {
    sign publishing.publications.frameworkTest
}
