plugins { id 'application' id 'java' id "de.undercouch.download" version "5.1.0" id 'idea' id "io.github.0ffz.github-packages" version "1.2.1" // Plugin for anonymous inclusion of artifacts hosted in github package registry } description = 'Voxel application' java { sourceCompatibility = '11' targetCompatibility = '11' } ext.jmonkeyengineVersion = '3.5.2-stable' mainClassName = 'com.emamaker.voxeltest.intervaltrees.Voxel' if (!hasProperty('mainClass')) { ext.mainClass = mainClassName } jar.manifest.attributes('Main-Class': mainClassName) repositories { mavenCentral() mavenLocal() } dependencies { // You can read more about how to add dependencies here: // https://docs.gradle.org/current/userguide/dependency_management.html#sec:how_to_declare_your_dependencies implementation 'org.jmonkeyengine:jme3-core:' + jmonkeyengineVersion runtimeOnly 'org.jmonkeyengine:jme3-jogg:' + jmonkeyengineVersion runtimeOnly 'org.jmonkeyengine:jme3-plugins:' + jmonkeyengineVersion runtimeOnly 'org.jmonkeyengine:jme3-lwjgl3:' + jmonkeyengineVersion } distZip { //having a degenerate folder within the dist zip complicates generating the other zips eachFile { file -> String path = file.relativePath file.setPath(path.substring(path.indexOf("/") + 1, path.length())) } includeEmptyDirs(false) } //See https://api.adoptium.net/v3/assets/feature_releases/11/ga?image_type=jre for jre urls def windowsJreUrl = "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jre_x64_windows_hotspot_11.0.15_10.zip" def linuxJreUrl = "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jre_x64_linux_hotspot_11.0.15_10.tar.gz" def macJreUrl = "https://github.com/adoptium/temurin11-binaries/releases/download/jdk-11.0.15%2B10/OpenJDK11U-jre_x64_mac_hotspot_11.0.15_10.tar.gz" task downloadWindowsJre(type: Download) { src windowsJreUrl dest new File(buildDir, '/jres/windowsJre.zip') overwrite false } task downloadAndUnzipWindowsJre(dependsOn: downloadWindowsJre, type: Copy) { from zipTree(downloadWindowsJre.dest) into "${buildDir}/jres/windowsJre/" includeEmptyDirs(false) filesMatching("**") { it.path = it.path.replaceAll("^[a-zA-Z0-9.+-]*[/\\\\]", "jre/") //rename the top level to something standard so the rest of the script will be easier } } task buildWindowsDistribution(dependsOn: [distZip, downloadAndUnzipWindowsJre], type: Copy) { group 'distribution' from files("${projectDir}/scripts/desktopDeployment/Voxel.bat"), zipTree(distZip.archiveFile), "${buildDir}/jres/windowsJre" into new File(buildDir, 'distributions/Voxel-windows') includeEmptyDirs false exclude 'bin/**' //we are adding our own run scripts, exclude the ones coming from distZip } task zipWindowsDistribution( dependsOn:buildWindowsDistribution, type: Zip) { group 'distribution' archiveFileName = "Voxel-windows.zip" destinationDirectory = file("$buildDir/distributions") from "$buildDir/distributions/Voxel-windows" } task downloadLinuxJre(type: Download) { src linuxJreUrl dest new File(buildDir, '/jres/linuxJre.tar.gz') overwrite false } task downloadAndUnzipLinuxJre(dependsOn: downloadLinuxJre, type: Copy) { from tarTree(downloadLinuxJre.dest) into "${buildDir}/jres/linuxJre/" includeEmptyDirs(false) filesMatching("**") { it.path = it.path.replaceAll("^[a-zA-Z0-9.+-]*[/\\\\]", "jre/") //rename the top level to something standard so the rest of the script will be easier } } task buildLinuxDistribution(dependsOn: [distZip, downloadAndUnzipLinuxJre], type: Copy) { group 'distribution' from files("${projectDir}/scripts/desktopDeployment/Voxel.sh"){ fileMode 0755 } from zipTree(distZip.archiveFile) from "${buildDir}/jres/linuxJre" into new File(buildDir, 'distributions/Voxel-linux') includeEmptyDirs false exclude 'bin/**' //we are adding our own run scripts, exclude the ones coming from distZip } task zipLinuxDistribution( dependsOn:buildLinuxDistribution, type: Zip) { group 'distribution' archiveFileName = "Voxel-linux.tar.gz" destinationDirectory = file("$buildDir/distributions") from ("$buildDir/distributions/Voxel-linux"){ include('**.sh') include('**/java') fileMode 0755 } from ("$buildDir/distributions/Voxel-linux"){ exclude('**.sh') exclude('**/java') } } task downloadMacJre(type: Download) { src macJreUrl dest new File(buildDir, '/jres/macJre.tar.gz') overwrite false } task downloadAndUnzipMacJre(dependsOn: downloadMacJre, type: Copy) { from tarTree(downloadMacJre.dest) into "${buildDir}/jres/macJre/" includeEmptyDirs(false) filesMatching("**") { it.path = it.path.replaceAll("^[a-zA-Z0-9.+-]*[/\\\\]", "jre/") //rename the top level to something standard so the rest of the script will be easier } } task buildMacDistribution(dependsOn: [distZip, downloadAndUnzipMacJre], type: Copy) { group 'distribution' from files("${projectDir}/scripts/desktopDeployment/Voxel.command"){ fileMode 0755 } from zipTree(distZip.archiveFile) from "${buildDir}/jres/macJre" into new File(buildDir, 'distributions/Voxel-mac') includeEmptyDirs false exclude 'bin/**' //we are adding our own run scripts, exclude the ones coming from distZip } task zipMacDistribution( dependsOn:buildMacDistribution, type: Zip) { group 'distribution' archiveFileName = "Voxel-mac.tar.gz" destinationDirectory = file("$buildDir/distributions") from ("$buildDir/distributions/Voxel-mac"){ include('**.command') include('**/java') fileMode 0755 } from ("$buildDir/distributions/Voxel-mac"){ exclude('**.command') exclude('**/java') } } task buildAllDistributions{ group 'distribution' dependsOn 'zipWindowsDistribution' dependsOn 'zipLinuxDistribution' dependsOn 'zipMacDistribution' } // cleanup tasks clean.dependsOn('cleanDLLs', 'cleanDyLibs', 'cleanLogs', 'cleanSOs') task cleanDLLs(type: Delete) { delete fileTree(dir: '.', include: '*.dll') } task cleanDyLibs(type: Delete) { delete fileTree(dir: '.', include: '*.dylib') } task cleanLogs(type: Delete) { delete fileTree(dir: '.', include: 'hs_err_pid*.log') } task cleanSOs(type: Delete) { delete fileTree(dir: '.', include: '*.so') } task fund(){ doLast { java.awt.Desktop.desktop.browse "https://start.jmonkeyengine.org/#!funding=JME_DESKTOP".toURI() } }