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() // gradle.kts, gradle wrapper などが documented = false で宣言されます}サンプルでも同じ1行で宣言しています(sample/jvm の GradleGroup.kt)。
composite build / buildSrc を利用している場合
Section titled “composite build / buildSrc を利用している場合”gradle() は build-logic などの included build と buildSrc を宣言しません。その中のビルドスクリプトと規約プラグインは、自分で宣言します。
@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" // buildSrc を利用する場合は代わりに "buildSrc"const val conventionSourceDir = "$buildConventionDir/src/main/kotlin"
val projectArchitecture = architecture { gradle()
"Build".group { documented = false
"BuildScript" { summary = "included build / buildSrc 自身のビルドスクリプト" layout { buildConventionDir { "build.gradle".ktsFile() "settings.gradle".ktsFile().optional() // buildSrc では無くてもよい } } }
"ConventionPluginScript" { summary = "各モジュールが 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 = "規約プラグインのスクリプトから使う、ヘルパーの Kotlin クラス" layout { conventionSourceDir { "**" / "*".ktFile() // パッケージを切ったクラスも許す } } } }}