plugins {
    id 'java-library'
}

repositories {
    mavenCentral()
}

dependencies {
    implementation project(':checker-qual')

    // This is used by org.checkerframework.javacutil.TypesUtils.isImmutableTypeInJdk.
    // https://mvnrepository.com/artifact/org.plumelib/plume-util
    implementation 'org.plumelib:plume-util:1.5.3'

    // External dependencies:
    // If you add an external dependency, you must shadow its packages both in checker.jar and
    // and dataflow-shaded.jar.
    // See the comment in ../build.gradle in the shadowJar block and ../dataflow/build.gradle in
    // shadowJar block.
}

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

final javacUtilPom(publication) {
    sharedPublicationConfiguration(publication)
    publication.from components.java

    publication.pom {
        name = 'Javacutil'
        description = 'javacutil contains utility classes for the javac compiler.'
        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 {
        javacUtil(MavenPublication) {
            javacUtilPom it
        }
    }
}
signing {
    sign publishing.publications.javacUtil
}
