]> nmode's Git Repositories - signal-cli/blob - build.gradle.kts
Update dependencies
[signal-cli] / build.gradle.kts
1 plugins {
2 java
3 application
4 eclipse
5 `check-lib-versions`
6 id("org.graalvm.buildtools.native") version "0.10.3"
7 }
8
9 version = "0.13.10-SNAPSHOT"
10
11 java {
12 sourceCompatibility = JavaVersion.VERSION_21
13 targetCompatibility = JavaVersion.VERSION_21
14
15 if (!JavaVersion.current().isCompatibleWith(targetCompatibility)) {
16 toolchain {
17 languageVersion.set(JavaLanguageVersion.of(targetCompatibility.majorVersion))
18 }
19 }
20 }
21
22 application {
23 mainClass.set("org.asamk.signal.Main")
24 }
25
26 graalvmNative {
27 binaries {
28 this["main"].run {
29 buildArgs.add("--install-exit-handlers")
30 buildArgs.add("-Dfile.encoding=UTF-8")
31 buildArgs.add("-J-Dfile.encoding=UTF-8")
32 resources.autodetect()
33 configurationFileDirectories.from(file("graalvm-config-dir"))
34 if (System.getenv("GRAALVM_HOME") == null) {
35 toolchainDetection.set(true)
36 javaLauncher.set(javaToolchains.launcherFor {
37 languageVersion.set(JavaLanguageVersion.of(21))
38 })
39 } else {
40 toolchainDetection.set(false)
41 }
42 }
43 }
44 }
45
46 dependencies {
47 implementation(libs.bouncycastle)
48 implementation(libs.jackson.databind)
49 implementation(libs.argparse4j)
50 implementation(libs.dbusjava)
51 implementation(libs.slf4j.api)
52 implementation(libs.slf4j.jul)
53 implementation(libs.logback)
54 implementation(project(":lib"))
55 }
56
57 configurations {
58 implementation {
59 resolutionStrategy.failOnVersionConflict()
60 }
61 }
62
63
64 tasks.withType<AbstractArchiveTask>().configureEach {
65 isPreserveFileTimestamps = false
66 isReproducibleFileOrder = true
67 }
68
69 tasks.withType<JavaCompile> {
70 options.encoding = "UTF-8"
71 }
72
73 tasks.withType<Jar> {
74 manifest {
75 attributes(
76 "Implementation-Title" to project.name,
77 "Implementation-Version" to project.version,
78 "Main-Class" to application.mainClass.get()
79 )
80 }
81 }
82
83 task("fatJar", type = Jar::class) {
84 archiveBaseName.set("${project.name}-fat")
85 exclude(
86 "META-INF/*.SF",
87 "META-INF/*.DSA",
88 "META-INF/*.RSA",
89 "META-INF/NOTICE*",
90 "META-INF/LICENSE*",
91 "META-INF/INDEX.LIST",
92 "**/module-info.class"
93 )
94 duplicatesStrategy = DuplicatesStrategy.WARN
95 from(configurations.runtimeClasspath.get().map { if (it.isDirectory) it else zipTree(it) })
96 with(tasks.jar.get())
97 }