Joel Denke
01/24/2024, 2:23 PMp-schneider
01/24/2024, 2:47 PMcompose {
kotlinCompilerPlugin.set("1.5.7.1")
// or
kotlinCompilerPlugin.set("org.jetbrains.compose.compiler:compiler:1.5.7.1")
}
p-schneider
01/24/2024, 2:48 PMorg.jetbrains.compose
plugin is applied)Joel Denke
01/24/2024, 2:48 PMJoel Denke
01/24/2024, 2:50 PMclass ComposeMultiplatformConventionPlugin : Plugin<Project> {
override fun apply(target: Project) = with(target) {
pluginManager.alias(libs.plugins.jetbrains.compose)
configureCompose()
}
}
fun Project.configureCompose() {
compose {
kotlinCompilerPlugin.set(libs.versions.jetbrains.compose.compiler)
}
val composeVersion = libs.versions.jetbrains.compose.asProvider().get()
configurations.configureEach {
resolutionStrategy.eachDependency {
val group = requested.group
when {
group.startsWith(libs.plugins.jetbrains.compose.get().pluginId) && !group.endsWith("compiler") -> {
useVersion(composeVersion)
}
}
}
}
}
fun Project.compose(block: ComposeExtension.() -> Unit) {
extensions.configure<ComposeExtension>(block)
}
Joel Denke
01/24/2024, 2:51 PMp-schneider
01/24/2024, 2:52 PMandroid {
composeOptions {
kotlinCompilerExtensionVersion = "1.5.8"
}
}
But I didn't find a way to manually override the android one with the CMP one since that only supports the version as string, not the full maven dependency notation.Joel Denke
01/24/2024, 2:53 PMp-schneider
01/24/2024, 2:53 PMJoel Denke
01/24/2024, 2:53 PMJoel Denke
01/24/2024, 2:54 PMp-schneider
01/24/2024, 2:54 PMJoel Denke
01/24/2024, 2:55 PMJoel Denke
01/24/2024, 2:55 PMJoel Denke
01/24/2024, 2:56 PMJoel Denke
01/24/2024, 2:57 PMJoel Denke
01/24/2024, 2:57 PMp-schneider
01/24/2024, 2:58 PMandroid {
composeOptions {
kotlinCompilerExtensionVersion = "1.5.8"
}
}
isn't needed, I think it would work by default if the CMP compiler is properly set up but this may be used to force a specific androidx compiler.
In my project it works with and without that block. (Kotlin 1.9.22 + Compose Multiplatform 1.6.11)Joel Denke
01/24/2024, 2:58 PMJoel Denke
01/24/2024, 2:59 PMp-schneider
01/24/2024, 2:59 PMJoel Denke
01/24/2024, 3:00 PMsuppressKotlinVersionCompatibilityCheck
but don't say I didn't warn you!).
πJoel Denke
01/24/2024, 3:00 PMJoel Denke
01/24/2024, 3:02 PMp-schneider
01/24/2024, 3:02 PMJoel Denke
01/24/2024, 3:02 PMJoel Denke
01/24/2024, 3:03 PMJoel Denke
01/24/2024, 3:03 PMJoel Denke
01/24/2024, 3:03 PMJoel Denke
01/24/2024, 3:04 PMJoel Denke
01/24/2024, 3:05 PMJoel Denke
01/24/2024, 3:05 PMJoel Denke
01/24/2024, 3:06 PMp-schneider
01/24/2024, 3:10 PMimplementation("androidx.compose.ui:ui:1.6.0-rc01") {
exclude(group = "...", module = "...") // to exclude newer dependencies
// or even
isTransitive = false
}
I haven't done this myself, but this would be the approach I would try first.p-schneider
01/24/2024, 3:12 PMgradlew :module:dependencies
to figure out what dependency is loaded where etc.p-schneider
01/24/2024, 3:13 PMJoel Denke
01/24/2024, 3:26 PMJoel Denke
01/24/2024, 3:26 PM