cross-posted from: https://lemmy.ml/post/21390036
I finished reading the Kotlin documentation (§Concepts) and want to do something now. I was thinking about making a desktop app with a GUI. For that people seem to recommend Jetbrains Compose.
It seems however that the guides (https://www.jetbrains.com/help/kotlin-multiplatform-dev/compose-multiplatform-create-first-app.html) to set up such a project assume I have more than one target. I however don't and thus don't need to divide my project into common code, ios code, wasm code, etc. I only need to compile my project for the JVM, since I'm only intending to support Linux and BSD. I don't have much experience with the Java/Kotlin-centric build systems and I would like to avoid investing too much time into it (since for now I would like to spend more time writing that app, preferring to learn Gradle later in my journey), so I thought about just generating a template as recommended by the guides (using https://kmp.jetbrains.com/) and to just remove everything that doesn't matter for my project. However, since I don't have much experience with Gradle yet, I don't know what exactly the changes are that I need to make to the build script
Generated code
import org.jetbrains.compose.desktop.application.dsl.TargetFormat plugins { alias(libs.plugins.kotlinMultiplatform) alias(libs.plugins.jetbrainsCompose) alias(libs.plugins.compose.compiler) } kotlin { jvm("desktop") sourceSets { val desktopMain by getting commonMain.dependencies { implementation(compose.runtime) implementation(compose.foundation) implementation(compose.material) implementation(compose.ui) implementation(compose.components.resources) implementation(compose.components.uiToolingPreview) implementation(libs.androidx.lifecycle.viewmodel) implementation(libs.androidx.lifecycle.runtime.compose) } desktopMain.dependencies { implementation(compose.desktop.currentOs) implementation(libs.kotlinx.coroutines.swing) } } } compose.desktop { application { mainClass = "org.example.project.MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "org.example.project" packageVersion = "1.0.0" } } }
What resources should I look at to quickly create a kotlin Compose project targeting only the JVM? (maybe a gradle crashcourse????)
Unrelated, but if you want you can also share your opinion regarding the use of Compose vs JavaFX vs Swing for this situation
I've never played Factorio and had fun playing the game. I think there is supposed to be a tutorial when you first start the game? And I think the tech tree is a good guide for what to do next.