Skip to content
Snippets Groups Projects
build.gradle.kts 4.13 KiB
Newer Older
Nico's avatar
Nico committed
import org.jetbrains.compose.compose
import org.jetbrains.compose.desktop.application.dsl.TargetFormat
import org.jetbrains.compose.jetbrainsCompose
Nico's avatar
Nico committed
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile

buildscript {
    repositories {
        jcenter()
        mavenLocal()
        google()
        maven("https://plugins.gradle.org/m2/")
    }

    // keep version here in sync when updating briar
    dependencies {
        classpath("com.android.tools.build:gradle:4.1.3")
        classpath("ru.vyarus:gradle-animalsniffer-plugin:1.5.3")
        classpath(files("briar/libs/gradle-witness.jar"))
    }

    // keep version here in sync when updating briar
    extra.apply {
        set("dagger_version", "2.33")
        set("okhttp_version", "3.12.13")
        set("tor_version", "0.3.5.17")
        set("obfs4proxy_version", "0.0.12-dev-40245c4a")
        set("junit_version", "4.13.2")
        set("jmock_version", "2.12.0")
    }
}

Nico's avatar
Nico committed
plugins {
    kotlin("jvm") version "1.6.10"
    kotlin("kapt") version "1.6.10"
    id("org.jetbrains.compose") version "1.0.1"
Nico's avatar
Nico committed
    id("java")
    id("idea")
    id("org.jlleitschuh.gradle.ktlint") version "10.1.0"
    id("org.briarproject.briar.desktop.build-data-gradle-plugin")
Nico's avatar
Nico committed
}

Nico's avatar
Nico committed
group = "app.briar.desktop"
version = "0.1-nightly"
Nico's avatar
Nico committed

allprojects {
    repositories {
        mavenCentral()
        jetbrainsCompose()
Nico's avatar
Nico committed
}

buildData {
    packageName = "org.briarproject.briar.desktop"
}

Nico's avatar
Nico committed
dependencies {
    implementation(compose.desktop.currentOs)
    implementation(compose.materialIconsExtended)
Nico's avatar
Nico committed

    implementation("com.github.ajalt.clikt:clikt:3.3.0")
    implementation("com.ibm.icu:icu4j:70.1")
Nico's avatar
Nico committed

    implementation(project(path = ":briar-core", configuration = "default"))
    implementation(project(path = ":bramble-java", configuration = "default"))
Nico's avatar
Nico committed

    implementation("io.github.microutils:kotlin-logging-jvm:2.0.10")
    implementation("org.slf4j:jul-to-slf4j:1.7.32")
    implementation("ch.qos.logback:logback-classic:1.2.10")
Nico's avatar
Nico committed
    val daggerVersion = "2.24"
    kapt("com.google.dagger:dagger-compiler:$daggerVersion")
Nico's avatar
Nico committed

    testImplementation(kotlin("test-testng"))
    testImplementation("commons-io:commons-io:2.11.0")
    kaptTest("com.google.dagger:dagger-compiler:$daggerVersion")
Nico's avatar
Nico committed
}

tasks.test {
    useTestNG()
}

tasks.withType<KotlinCompile> {
Nico's avatar
Nico committed
    kotlinOptions.jvmTarget = "11"
}

Nico's avatar
Nico committed
tasks.withType<org.gradle.jvm.tasks.Jar> {
    exclude("META-INF/BC1024KE.RSA", "META-INF/BC1024KE.SF", "META-INF/BC1024KE.DSA")
    exclude("META-INF/BC2048KE.RSA", "META-INF/BC2048KE.SF", "META-INF/BC2048KE.DSA")
}

tasks.jar {
    exclude("META-INF/BC1024KE.RSA", "META-INF/BC1024KE.SF", "META-INF/BC1024KE.DSA")
    exclude("META-INF/BC2048KE.RSA", "META-INF/BC2048KE.SF", "META-INF/BC2048KE.DSA")
}

Nico's avatar
Nico committed
compose.desktop {
    application {
        mainClass = "org.briarproject.briar.desktop.MainKt"
Nico's avatar
Nico committed
        nativeDistributions {
            targetFormats(TargetFormat.Msi, TargetFormat.Exe, TargetFormat.Deb, TargetFormat.Rpm)
            packageName = "Briar"
            packageVersion = "0.0.1"
            description = "Secure messaging, anywhere"
            vendor = "The Briar Project"
            copyright = "2021-2022 The Briar Project"
            licenseFile.set(project.file("LICENSE.txt"))
            // As described at https://github.com/JetBrains/compose-jb/tree/master/tutorials/Native_distributions_and_local_execution#configuring-included-jdk-modules
            // the Gradle plugin does not automatically determine necessary JDK modules to ship
            // so that we need to define required modules here:
            modules("java.sql")
            modules("java.naming")
            linux {
                packageName = "briar-desktop"
                iconFile.set(project.file("src/main/resources/images/logo_circle.png"))
                debMaintainer = "contact@briarproject.org"
                appCategory = "comm"
                menuGroup = "Network;Chat;InstantMessaging;"
            }
            windows {
                iconFile.set(project.file("src/main/resources/images/logo_circle.ico"))
                upgradeUuid = "cc8b40f7-f190-4cea-bfec-ceb9ef85df09"
            }
Nico's avatar
Nico committed
        }
    }
Nico's avatar
Nico committed
}