Gradle
@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architectureimport me.tbsten.katachi.dsl.gradle.gradle
val projectArchitecture = architecture { gradle() // Declares gradle.kts, the Gradle wrapper, and the like with documented = false}The samples declare it with the same single line (GradleGroup.kt in sample/jvm).
When you use a composite build / buildSrc
Section titled “When you use a composite build / buildSrc”gradle() does not declare included builds such as build-logic, nor buildSrc. Declare their build scripts and convention plugins yourself.
@file:OptIn(ExperimentalKatachiApi::class)
import me.tbsten.katachi.ExperimentalKatachiApiimport me.tbsten.katachi.dsl.architectureimport me.tbsten.katachi.dsl.gradle.gradleimport me.tbsten.katachi.dsl.kotlin.ktFileimport me.tbsten.katachi.dsl.kotlin.ktsFileimport me.tbsten.katachi.dsl.template
const val buildConventionDir = "build-logic" // Use "buildSrc" instead if you use buildSrcconst val conventionSourceDir = "$buildConventionDir/src/main/kotlin"
val projectArchitecture = architecture { gradle()
"Build".group { documented = false
"BuildScript" { summary = "The build scripts of the included build / buildSrc itself" layout { buildConventionDir { "build.gradle".ktsFile() "settings.gradle".ktsFile().optional() // buildSrc may go without one } } }
"ConventionPluginScript" { summary = "Convention plugin scripts that each module applies with plugins { id(\"...\") }" layout { conventionSourceDir { "${capture("name")}.gradle".ktsFile() .template { """ plugins { kotlin("jvm") } """.trimIndent() } } }
// ./gradlew katachiTemplate --arg template=Build.ConventionPluginScript --arg name=kotlin-library }
"ConventionPluginSource" { summary = "Helper Kotlin classes used by the convention plugin scripts" layout { conventionSourceDir { "**" / "*".ktFile() // also allows classes in packages } } } }}