Cookbook
- Dependencies:
[versions]
buildkonfig = "0.17.1"
[libraries]
# BuildKonfig
buildKonfig-compiler = {group = "com.codingfeline.buildkonfig", name = "buildkonfig-compiler", version.ref = "buildkonfig"}
buildKonfig-gradlePlugin= {group = "com.codingfeline.buildkonfig", name = "buildkonfig-gradle-plugin", version.ref = "buildkonfig"}
[plugins]
buildkonfig = { id = "com.codingfeline.buildkonfig", version.ref = "buildkonfig" }
- Build-logic
dependencies{
implementation(libs.buildKonfig.compiler)
implementation(libs.buildKonfig.gradlePlugin)
}
- Convention Plugin
import com.android.build.gradle.internal.cxx.configure.gradleLocalProperties
import com.codingfeline.buildkonfig.compiler.FieldSpec
import com.codingfeline.buildkonfig.gradle.BuildKonfigExtension
import org.gradle.api.Plugin
import org.gradle.api.Project
import org.gradle.internal.Actions.with
import org.gradle.kotlin.dsl.apply
import org.gradle.kotlin.dsl.configure
import ramzi.eljabali.justmessage.convention.libsFindPlugin
class BuildKonfigConventionPlugin : Plugin<Project> {
override fun apply(target: Project) {
with(target) {
with(pluginManager) {
apply(libsFindPlugin("buildKonfig"))
}
extensions.configure<BuildKonfigExtension> {
packageName = pathToPackageName()
defaultConfigs {
val apiKey = gradleLocalProperties(
rootDir,
rootProject.providers
).getProperty("API_KEY") ?: IllegalStateException(
"Missing `API_KEY` property in local.properties."
)
buildConfigField(FieldSpec.Type.STRING, "API_KEY", apiKey as String)
}
}
}
}
}
- Register Plugin
gradlePlugin {
plugins {
register("buildKonfig") {
id = "just.message.build.konfig"
implementationClass = "BuildKonfigConventionPlugin"
}
}
}