apply plugin: "java" sourceCompatibility = 1.8 sourceSets.main.java.srcDirs = [ "src/" ] project.ext.mainClassName = "io.anuke.mindustry.desktop.DesktopLauncher" project.ext.assetsDir = new File("../core/assets"); def PACKR_DIR = "$System.env.PACKR_DIR" def ICON_DIR = new File("core/assets/sprites/icon.icns") task run(dependsOn: classes, type: JavaExec) { main = project.mainClassName classpath = sourceSets.main.runtimeClasspath standardInput = System.in workingDir = project.assetsDir ignoreExitValue = true if (project.hasProperty("appArgs")) { args Eval.me(appArgs) } } task debug(dependsOn: classes, type: JavaExec) { main = project.mainClassName classpath = sourceSets.main.runtimeClasspath standardInput = System.in workingDir = project.assetsDir ignoreExitValue = true debug = true } task dist(type: Jar) { from files(sourceSets.main.output.classesDirs) from files(sourceSets.main.output.resourcesDir) from {configurations.compile.collect {zipTree(it)}} from files(project.assetsDir); manifest { attributes 'Main-Class': project.mainClassName } } dist.dependsOn classes task clearOut(type: Delete){ delete "packr-out/" } ext.getPlatform = { if(project.gradle.startParameter.taskNames.size() == 0 || !project.gradle.startParameter.taskNames.first().contains("packr")) return; if(!project.hasProperty("version")){ throw new InvalidUserDataException("No version set. Set version with -Pversion=name"); } if (project.hasProperty("platform")) { def lc = platform.toLowerCase() if(lc.equals("windows64")) { return "windows64"; }else if(lc.equals("windows32")){ return "windows32"; }else if(lc.equals("linux")){ return "linux64"; }else if(lc.equals("mac")){ return "mac"; }else{ throw new InvalidUserDataException("Invalid platform. Set platform with -Pplatform=windows/linux/mac"); } }else{ throw new InvalidUserDataException("No platform defined. Set platform with -Pplatform=windows/linux/mac"); } } ext.getDeployVersion = { if(project.gradle.startParameter.taskNames.size() == 0 || !project.gradle.startParameter.taskNames.first().contains("packr")) return; if(!project.hasProperty("deployversion")){ throw new InvalidUserDataException("No version set. Set version with -Pdeployversion=name"); } return deployversion; } ext.getPackage = { return project.ext.mainClassName.substring(0, project.ext.mainClassName.indexOf("desktop") - 1) } //note: call desktop:dist beforehand task packrCmd(type: Exec) { copy{ into PACKR_DIR from "build/libs/desktop-release.jar" } commandLine "java", "-jar", PACKR_DIR+"packr.jar", "--verbose", "--bundle", getPackage(), "--platform", getPlatform(), "--executable", appName, "--output", "packr-out/", "--mainclass", project.ext.mainClassName, "--jdk", PACKR_DIR+"jdk-"+getPlatform()+".zip", "--icon", ICON_DIR.getAbsolutePath(), "--classpath", "--", PACKR_DIR+"config.json" } task fixMac (type: Copy){ dependsOn "packrCmd" into "packr-out/" + appName + ".app/Contents/" from "packr-out/Contents/" doLast{ delete{ delete "packr-out/Contents/" } } } task fixWindows32 (type: Copy){ dependsOn "packrCmd" into "packr-out/jre/bin/" from PACKR_DIR + "zip.dll" rename ("zip.dll", "ojdkbuild_zlib.dll") doLast{ copy{ into "packr-out/jre/bin/" from PACKR_DIR + "zip.dll" } } } task packrZip(type: Zip) { dependsOn "packrCmd" finalizedBy "clearOut" if(getPlatform().equals("mac")){ dependsOn "fixMac" } if(getPlatform().equals("windows32")){ dependsOn "fixWindows32" } from "packr-out/" archiveName appName + "-" + getPlatform() + "-" + getDeployVersion() + ".zip" destinationDir(file("packr-export")) doLast{ delete{ delete "null/" } } } eclipse { project { name = appName + "-desktop" linkedResource name: 'assets', type: '2', location: 'PARENT-1-PROJECT_LOC/core/assets' } } task afterEclipseImport(description: "Post processing after project generation", group: "IDE") { doLast { def classpath = new XmlParser().parse(file(".classpath")) new Node(classpath, "classpathentry", [ kind: 'src', path: 'assets' ]); def writer = new FileWriter(file(".classpath")) def printer = new XmlNodePrinter(new PrintWriter(writer)) printer.setPreserveWhitespace(true) printer.print(classpath) } }