aboutsummaryrefslogtreecommitdiff
path: root/build.gradle
diff options
context:
space:
mode:
Diffstat (limited to 'build.gradle')
-rw-r--r--build.gradle140
1 files changed, 140 insertions, 0 deletions
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..49bc3d4
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,140 @@
+/*
+ * This file was generated by the Gradle 'init' task.
+ *
+ * This generated file contains a sample Kotlin application project to get you started.
+ * For more details take a look at the 'Building Java & JVM projects' chapter in the Gradle
+ * User Manual available at https://docs.gradle.org/8.0.2/userguide/building_java_projects.html
+ */
+
+import org.gradle.internal.os.OperatingSystem
+import java.nio.file.Files
+import java.io.File
+
+buildscript {
+ repositories {
+ mavenCentral()
+ }
+ dependencies {
+ classpath 'io.github.fvarrui:javapackager:1.7.2'
+ }
+}
+
+plugins {
+ // Apply the org.jetbrains.kotlin.jvm Plugin to add support for Kotlin.
+ id 'org.jetbrains.kotlin.jvm' version '1.8.0'
+
+ // Apply the application plugin to add support for building a CLI application in Java.
+ id 'application'
+
+ id 'org.openjfx.javafxplugin' version '0.0.13'
+ id 'distribution'
+}
+
+apply plugin: 'io.github.fvarrui.javapackager.plugin'
+
+version = "1.0"
+
+repositories {
+ // Use Maven Central for resolving dependencies.
+ mavenCentral()
+}
+
+dependencies {
+ // Use the Kotlin JUnit 5 integration.
+ testImplementation 'org.jetbrains.kotlin:kotlin-test-junit5'
+
+ // Use the JUnit 5 integration.
+ testImplementation 'org.junit.jupiter:junit-jupiter-engine:5.9.1'
+
+ // This dependency is used by the application.
+ implementation 'com.google.guava:guava:31.1-jre'
+
+ // Coroutines core
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.7.0"
+ implementation "org.jetbrains.kotlinx:kotlinx-coroutines-javafx:1.7.0"
+
+ // Archiver
+ implementation "org.rauschig:jarchivelib:1.2.0"
+}
+
+application {
+ // Define the main class for the application.
+ mainClass = 'xyz.brysonsteck.ServerCraft.MainKt'
+ applicationName = "ServerCraft"
+}
+
+distTar {
+ compression = Compression.GZIP
+}
+
+jar {
+ // archiveFileName = 'ServerCraft.jar'
+
+ manifest {
+ attributes 'Main-Class': application.mainClass
+ }
+
+ duplicatesStrategy = DuplicatesStrategy.INCLUDE
+ from {
+ configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
+ }
+}
+
+task pack(type: io.github.fvarrui.javapackager.gradle.PackageTask, dependsOn: build) {
+ mainClass = 'xyz.brysonsteck.ServerCraft.MainKt'
+ bundleJre = true
+ generateInstaller = true
+ administratorRequired = false
+ organizationName = "Bryson Steck"
+ organizationUrl = "https://brysonsteck.xyz"
+ organizationEmail = "me@brysonsteck.xyz"
+ url = "https://codeberg.org/brysonsteck/ServerCraft"
+
+ linuxConfig {
+ pngFile = file('src/main/resources/icon.png')
+ wrapJar = false
+ }
+
+ macConfig {
+ icnsFile = file('src/main/resources/icon.icns')
+ volumeIcon = file('src/main/resources/icon.icns')
+ backgroundImage = file('src/main/resources/dmg.png')
+ codesignApp = false
+ developerId = 'Bryson Steck'
+ appId = 'xyz.brysonsteck.ServerCraft'
+ }
+
+ winConfig {
+ icoFile = file('src/main/resources/icon.ico')
+ setupMode = 'askTheUser'
+ disableDirPage = false
+ disableFinishedPage = false
+ disableWelcomePage = false
+ }
+}
+
+// tasks.register('fixAppImageIcon', Copy) {
+build.doLast {
+ if (OperatingSystem.current().isLinux()) {
+ exec {
+ workingDir "${buildDir}"
+ commandLine "mkdir", "-p", "assets/AppDir"
+ }
+ exec {
+ workingDir "${buildDir}"
+ commandLine "cp", "resources/main/icon.png", "assets/AppDir/ServerCraft.png"
+ }
+ }
+}
+
+// build.finalizedBy(fixAppImageIcon)
+
+javafx {
+ version = "20"
+ modules = ['javafx.controls', 'javafx.fxml', 'javafx.graphics']
+}
+
+tasks.named('test') {
+ // Use JUnit Platform for unit tests.
+ useJUnitPlatform()
+}