From 9b200a05ef39c49a718d18829212e3f1fb350b67 Mon Sep 17 00:00:00 2001 From: Bryson Steck Date: Wed, 17 May 2023 21:41:04 -0600 Subject: fixed AppImage, changed to single app --- build.gradle | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 140 insertions(+) create mode 100644 build.gradle (limited to 'build.gradle') 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() +} -- cgit v1.2.3