plugins {
    id "java-library"
    id "ivy-publish"
}

description = "Variant, source-set, and outgoing artifact model plugins for Gradle builds"

java {
    withJavadocJar()
    withSourcesJar()
    toolchain {
        languageVersion = JavaLanguageVersion.of(21)
    }
}

dependencies {
    compileOnly libs.jdt.annotations

    api gradleApi(),
        project(":common")

    testImplementation gradleTestKit()
    testImplementation "org.junit.jupiter:junit-jupiter-api:5.11.4"
    testRuntimeOnly "org.junit.jupiter:junit-jupiter-engine:5.11.4"
    testRuntimeOnly "org.junit.platform:junit-platform-launcher:1.11.4"
}

task printVersion{
    doLast {
        println "project: $project.group:$project.name:$project.version"
        println "jar: ${->jar.archiveFileName.get()}"
    }
}

test {
    useJUnitPlatform()
}

tasks.register("minGradleCompatibilityTest", Test) {
    description = "Runs functional TestKit tests against the minimum supported Gradle version."
    group = "verification"
    useJUnitPlatform()
    testClassesDirs = sourceSets.test.output.classesDirs
    classpath = sourceSets.test.runtimeClasspath
    include "**/*FunctionalTest.class"
    systemProperty "org.implab.gradle.test.gradleVersion", providers.gradleProperty("testMinGradleVersion").get()
    inputs.property("testMinGradleVersion", providers.gradleProperty("testMinGradleVersion"))
    shouldRunAfter test
}

javadoc {
    exclude "**/internal/**"
}

publishing {
    repositories {
        ivy {
            url = "${System.properties["user.home"]}/ivy-repo"
        }
    }
    publications {
        ivy(IvyPublication) {
            from components.java
            descriptor.description {
                text = providers.provider({ description })
            }
            descriptor.license {
                name = "BSD-2-Clause"
                url = "https://spdx.org/licenses/BSD-2-Clause.html"
            }
        }
    }
}
