/* * 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 { 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" additionalModules = [ "java.management", "jdk.crypto.ec" ] 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 } } 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" } } } javafx { version = "20" modules = ['javafx.controls', 'javafx.fxml', 'javafx.graphics'] } tasks.named('test') { // Use JUnit Platform for unit tests. useJUnitPlatform() }