import org.jetbrains.compose.compose import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import org.gradle.jvm.tasks.Jar plugins { // Kotlin version must match compose version kotlin("jvm") version "1.6.10" kotlin("kapt") version "1.6.10" kotlin("plugin.serialization") version "1.6.10" id("org.jetbrains.compose") version "1.1.1" } // Remember to update Constants.APP_VERSION when changing this version val projectVersion = "0.2.0" val projectName = "Gitnuro" group = "com.jetpackduba" version = projectVersion repositories { mavenCentral() google() maven { url = uri("https://maven.pkg.jetbrains.space/public/p/compose/dev") } } dependencies { implementation(compose.desktop.currentOs) @OptIn(org.jetbrains.compose.ExperimentalComposeLibrary::class) implementation(compose.desktop.components.splitPane) implementation("org.eclipse.jgit:org.eclipse.jgit:6.1.0.202203080745-r") implementation("org.apache.sshd:sshd-core:2.8.0") implementation("com.google.dagger:dagger:2.41") implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2") kapt("com.google.dagger:dagger-compiler:2.41") testImplementation(platform("org.junit:junit-bom:5.8.2")) testImplementation("org.junit.jupiter:junit-jupiter:5.8.2") testImplementation("io.mockk:mockk:1.12.3") implementation("com.squareup.retrofit2:retrofit:2.9.0") implementation("com.squareup.retrofit2:converter-scalars:2.9.0") implementation("net.i2p.crypto:eddsa:0.3.0") } tasks.test { useJUnitPlatform() testLogging { events("passed", "skipped", "failed") } } tasks.withType() { kotlinOptions.jvmTarget = "17" kotlinOptions.allWarningsAsErrors = true kotlinOptions.freeCompilerArgs += "-opt-in=kotlin.RequiresOptIn" } compose.desktop { application { mainClass = "MainKt" nativeDistributions { includeAllModules = true packageName = projectName version = projectVersion description = "Multiplatform Git client" windows { iconFile.set(project.file("icons/icon.ico")) } } } } task("fatJar", type = Jar::class) { archiveBaseName.set(projectName) duplicatesStrategy = DuplicatesStrategy.EXCLUDE manifest { attributes["Implementation-Title"] = name attributes["Implementation-Version"] = projectVersion attributes["Main-Class"] = "MainKt" } from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) }) { exclude( "META-INF/MANIFEST.MF", "META-INF/*.SF", "META-INF/*.DSA", "META-INF/*.RSA", ) } with(tasks.jar.get() as CopySpec) }