plugins { `java-gradle-plugin` alias(libs.plugins.jvm.ontt) alias(libs.plugins.kover) } repositories { mavenCentral() } dependencies { testImplementation("org.jetbrains.kotlin:kotlin-test-junit5") testRuntimeOnly("org.junit.platform:junit-platform-launcher") } gradlePlugin { val greeting by plugins.creating { id = "org.example.greeting" implementationClass = "org.example.GradleFunctionalTestPlugin" } } val functionalTestSourceSet = sourceSets.create("functionalTest") { compileClasspath += sourceSets.main.get().output + configurations.testRuntimeClasspath.get() runtimeClasspath += output + compileClasspath } configurations["functionalTestImplementation"].extendsFrom(configurations["testImplementation"]) configurations["functionalTestRuntimeOnly"].extendsFrom(configurations["testRuntimeOnly"]) val functionalTest by tasks.registering(Test::class) { testClassesDirs = functionalTestSourceSet.output.classesDirs classpath = functionalTestSourceSet.runtimeClasspath useJUnitPlatform() } gradlePlugin.testSourceSets.add(functionalTestSourceSet) tasks.named("check") { dependsOn(functionalTest) } tasks.named("test") { useJUnitPlatform() }