-
-
Notifications
You must be signed in to change notification settings - Fork 39
Open
Description
I’m using Gradle convention plugins in KMP project. All of them are defined and configured inside a single non-KMP module.
Inside it I added buildKonfig.gradle.kts
where I set up all BuildKonfig properties. All code below in this conventions' module.
// buildKonfig.gradle.kts
import com.codingfeline.buildkonfig.compiler.FieldSpec.Type
import com.myapp.example.applyIfNeeded
import com.myapp.example.extensions.buildKonfigConfig
import com.myapp.example.extensions.libs
plugins.applyIfNeeded(rootProject.libs.plugins.buildKonfig.get().pluginId)
buildKonfigConfig {
packageName = "com.myapp.example"
defaultConfigs {
buildConfigField(Type.BOOLEAN, "IS_ACTIVE", "true")
}
}
// BuildKonfigExtensions.kt
import com.codingfeline.buildkonfig.gradle.BuildKonfigExtension
import org.gradle.api.Project
import org.gradle.kotlin.dsl.findByType
internal val Project.buildKonfigExtension: BuildKonfigExtension
get() = extensions.findByType(BuildKonfigExtension::class) ?: error(
"BuildKonfigExtension not found. Please apply the BuildKonfig plugin before using this extension.")
internal fun Project.buildKonfigConfig(block: BuildKonfigExtension.() -> Unit) = block(buildKonfigExtension)
// build.gradle.kts of this conventions' module
plugins {
`kotlin-dsl` // To use Gradle Kotlin Dsl to write Convention Plugins
}
dependencies {
// ...
implementation(libs.gradleplugin.buildkonfig)
}
// toml
buildKonfig = { id = "com.codingfeline.buildkonfig", version.ref = "buildKonfig_version" }
gradleplugin-buildkonfig = { module = "com.codingfeline.buildkonfig:buildkonfig-gradle-plugin", version.ref = "buildKonfig_version" }
But in configuration above there is an issue with import com.codingfeline.buildkonfig.compiler.FieldSpec.Type
, specifically the compiler part cannot be resolved.
To fix it, I added a direct dependency on the BuildKonfig compiler module manually. This dependency is not mentioned in the README — I had to discover it myself.
// build.gradle.kts of this conventions' module
//...
dependencies {
// ...
implementation(libs.gradleplugin.buildkonfig)
implementation(libs.gradleplugin.buildKonfigCompiler)
}
// toml
gradleplugin-buildKonfigCompiler = { module = "com.codingfeline.buildkonfig:buildkonfig-compiler", version.ref = "buildKonfig_version" }
Questions:
1. Is adding this manual dependency required because I’m using Gradle convention plugins?
2. If so, should this be mentioned in the Doc?
fnc314 and swapnil-musale
Metadata
Metadata
Assignees
Labels
No labels