Mark Fisher
01/13/2025, 1:05 PMroot/
my-app/ # multiplatform with jvm/js etc, uses classes in core
core/ # simple kotlin
viz/ # tornadofx project for doing visualizations, uses classes in core
At the moment everything is in my-app, but I want to pull some of the core classes that viz needs into a core module, and have the others depend on it.
I've given the core build.gradle.kts a plugin of "kotlin("jvm")", and the multiplatform project uses multiplatform plugin, but when I compile I'm getting an error:
The Kotlin Gradle plugin was loaded multiple times in different subprojects
I don't want to make viz and core multiplatform modules, they are simple jvm modules.
How do I split my project up so I don't get the error, but the 2 non-multiplatform modules stay simple jvm modules?mbonnin
01/13/2025, 1:09 PMapply(false)
mbonnin
01/13/2025, 1:12 PMmy-app
won't be able to use any of the core
code unless you make core
multiplatform as well. But loading KGP in your root build script wil help with the "loaded multiple times" errorMark Fisher
01/13/2025, 1:14 PMmbonnin
01/13/2025, 1:17 PMcommonMain
won't be able to use core
eithermbonnin
01/13/2025, 1:17 PMcore
multiplatformMark Fisher
01/13/2025, 1:17 PMMark Fisher
01/13/2025, 1:19 PMplugins {
alias(libs.plugins.kotlin.jvm) apply(false)
}
core
plugins {
alias(libs.plugins.kotlin.jvm)
}
app
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.serialization)
}
but the app module is getting the error:
Error resolving plugin [id: 'org.jetbrains.kotlin.multiplatform', version: '2.1.0']
> The request for this plugin could not be satisfied because the plugin is already on the classpath with an unknown version, so compatibility cannot be checked.
mbonnin
01/13/2025, 1:20 PMmbonnin
01/13/2025, 1:21 PMplugins {
id("org.jetbrains.kotlin.jvm")
}
app
plugins {
id("org.jetbrains.kotlin.multiplatform")
id(/*serialization plugin id here*/)
}
mbonnin
01/13/2025, 1:22 PMMark Fisher
01/13/2025, 1:23 PMVampire
01/13/2025, 1:24 PMkotlin("jvm")
and kotlin("multiplatform")
and kotlin("plugin.serialization")
mbonnin
01/13/2025, 1:24 PMVampire
01/13/2025, 1:24 PMVampire
01/13/2025, 1:25 PMplugins {
alias(libs.plugins.kotlin.jvm) apply(false)
}
core
plugins {
kotlin("jvm")
}
app
plugins {
kotlin("multiplatform")
kotlin("plugin.serialization")
}
mbonnin
01/13/2025, 1:26 PMmbonnin
01/13/2025, 1:26 PMplugins {
alias(libs.plugins.kotlin.jvm) apply(false)
alias(libs.plugins.kotlin.multiplatform) apply(false)
alias(libs.plugins.kotlin.serialization) apply(false)
}
core
plugins {
alias(libs.plugins.kotlin.jvm)
}
app
plugins {
alias(libs.plugins.kotlin.multiplatform)
alias(libs.plugins.kotlin.serialization)
}
Vampire
01/13/2025, 1:26 PMVampire
01/13/2025, 1:27 PMmbonnin
01/13/2025, 1:27 PMVampire
01/13/2025, 1:27 PMmbonnin
01/13/2025, 1:27 PMmbonnin
01/13/2025, 1:28 PMVampire
01/13/2025, 1:29 PMVampire
01/13/2025, 1:29 PMMark Fisher
01/13/2025, 1:30 PMmbonnin
01/13/2025, 1:30 PMbuildscript {}
blocks 😅