build.gradle.kts (3578B)
1 import org.gradle.api.tasks.SourceSetContainer 2 import org.gradle.api.tasks.testing.Test 3 4 plugins { 5 `java-gradle-plugin` 6 alias(libs.plugins.kotlin.jvm) 7 } 8 9 kotlin { 10 jvmToolchain(21) 11 } 12 13 dependencies { 14 implementation(project(":contracts")) 15 implementation("org.jetbrains.kotlin:kotlin-gradle-plugin:${libs.versions.kotlin.get()}") 16 implementation("org.jetbrains.kotlin:compose-compiler-gradle-plugin:${libs.versions.kotlin.get()}") 17 implementation("org.jetbrains.compose:compose-gradle-plugin:${libs.versions.compose.get()}") 18 implementation("dev.detekt:detekt-gradle-plugin:${libs.versions.detekt.get()}") 19 implementation("org.jlleitschuh.gradle:ktlint-gradle:${libs.versions.ktlint.get()}") 20 implementation("com.github.jk1:gradle-license-report:${libs.versions.license.report.get()}") 21 implementation("org.owasp:dependency-check-gradle:${libs.versions.owasp.dependency.check.get()}") 22 testImplementation(kotlin("test")) 23 } 24 25 val sourceSets = the<SourceSetContainer>() 26 val functionalTestSourceSet = sourceSets.create("functionalTest") 27 28 configurations[functionalTestSourceSet.implementationConfigurationName] 29 .extendsFrom(configurations.testImplementation.get()) 30 configurations[functionalTestSourceSet.runtimeOnlyConfigurationName] 31 .extendsFrom(configurations.testRuntimeOnly.get()) 32 33 dependencies { 34 add(functionalTestSourceSet.implementationConfigurationName, sourceSets.main.get().output) 35 add(functionalTestSourceSet.implementationConfigurationName, gradleTestKit()) 36 add(functionalTestSourceSet.implementationConfigurationName, kotlin("test")) 37 } 38 39 gradlePlugin { 40 plugins { 41 create("harvestCircleRoot") { 42 id = "org.harvestcircle.build.root" 43 implementationClass = "org.harvestcircle.buildlogic.plugins.HarvestCircleRootPlugin" 44 } 45 create("harvestCircleKmpShared") { 46 id = "org.harvestcircle.build.kmp-shared" 47 implementationClass = "org.harvestcircle.buildlogic.plugins.HarvestCircleKmpSharedPlugin" 48 } 49 create("harvestCircleDesignSystem") { 50 id = "org.harvestcircle.build.design-system" 51 implementationClass = "org.harvestcircle.buildlogic.plugins.HarvestCircleDesignSystemPlugin" 52 } 53 create("harvestCircleDesignCatalog") { 54 id = "org.harvestcircle.build.design-catalog" 55 implementationClass = "org.harvestcircle.buildlogic.plugins.HarvestCircleDesignCatalogPlugin" 56 } 57 create("harvestCircleDesktopApp") { 58 id = "org.harvestcircle.build.desktop-app" 59 implementationClass = "org.harvestcircle.buildlogic.plugins.HarvestCircleDesktopAppPlugin" 60 } 61 create("harvestCircleRustFfi") { 62 id = "org.harvestcircle.build.rust-ffi" 63 implementationClass = "org.harvestcircle.buildlogic.plugins.HarvestCircleRustFfiPlugin" 64 } 65 create("harvestCirclePackaging") { 66 id = "org.harvestcircle.build.packaging" 67 implementationClass = "org.harvestcircle.buildlogic.plugins.HarvestCirclePackagingPlugin" 68 } 69 } 70 testSourceSets(functionalTestSourceSet) 71 } 72 73 tasks.withType<Test>().configureEach { 74 useJUnitPlatform() 75 } 76 77 val functionalTest by tasks.registering(Test::class) { 78 description = "Runs convention-plugin tests against isolated Gradle builds." 79 group = "verification" 80 testClassesDirs = functionalTestSourceSet.output.classesDirs 81 classpath = functionalTestSourceSet.runtimeClasspath 82 shouldRunAfter(tasks.test) 83 } 84 85 tasks.check { 86 dependsOn(functionalTest) 87 }