import org.jetbrains.compose.desktop.application.dsl.TargetFormat plugins { alias(libs.plugins.kotlin.jvm) alias(libs.plugins.kotlin.serialization) alias(libs.plugins.compose.multiplatform) } group = "com.bolenpad.photophetch" version = "1.0.0" kotlin { jvmToolchain(21) } tasks.withType { kotlinOptions.jvmTarget = "17" } java { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } dependencies { implementation(compose.desktop.currentOs) implementation(compose.material3) implementation(compose.materialIconsExtended) implementation(libs.coroutines.core) implementation(libs.coroutines.swing) implementation(libs.serialization.json) implementation(libs.slf4j.api) implementation(libs.logback.classic) } compose.desktop { application { mainClass = "com.bolenpad.photophetch.MainKt" nativeDistributions { targetFormats(TargetFormat.Dmg, TargetFormat.Msi, TargetFormat.Deb) packageName = "PhotoPhetch" packageVersion = "1.0.0" description = "Import photos from phones into PhotoPhile" vendor = "bolenpad" copyright = "© 2026 Kyle Bolen" modules( "java.naming", // javax.naming — needed by logback "java.management", // JMX — needed by logback "java.instrument", // needed by logback "jdk.unsupported", // needed by various reflection-based libs "java.security.jgss", // sometimes needed by networking ) macOS { bundleID = "com.bolenpad.photophetch" // Uncomment and add icon.icns to src/main/resources/ for a custom icon: // iconFile.set(project.file("src/main/resources/icon.icns")) signing { sign.set(false) // set true + add identity for App Store / Gatekeeper } } } // Fat JAR for quick distribution buildTypes.release.proguard { isEnabled = false } } }