evaluationDependsOn(':iZplPlugins:GameRadio') evaluationDependsOn(':iZplPlugins:WMP') evaluationDependsOn(':iZplPlugins:Editor') evaluationDependsOn(':iZplPlugins:rtsslink') evaluationDependsOn(':iZplPlugins:JukeBox') evaluationDependsOn(':iZplPlugins:Extractor') evaluationDependsOn(':iZplPlugins:discordjukebox') defaultTasks 'distZip' apply plugin: 'java-library' apply plugin: 'application' apply from: "$rootDir/utils/IO.gradle" version = '0.11.0.0-SNAPSHOT' mainClassName = 'de.nplusc.izc.iZpl.Main' //'de.nplusc.izc.iZpl.Main' jar { manifest { attributes 'Implementation-Title': 'iZPlaylist', 'Implementation-Version': version, 'Main-Class': 'de.nplusc.izc.iZpl.Main' } } java { toolchain { sourceCompatibility = JavaLanguageVersion.of(17) targetCompatibility = JavaLanguageVersion.of(17) } } startScripts { doLast { defaultJvmOpts = ["-Dlog4j.skipJansi=false", "-javaagent:#HACKHACKHACK#/lib/jar-loader.jar"] // fahr zur hölle Log5J def startScriptDir = outputDir.getAbsolutePath() def winStartScript = startScriptDir + "/" + applicationName + ".bat" def winStartScriptCopy = startScriptDir + "/" + applicationName + "c.bat" def linuxStartScript = startScriptDir + "/" + applicationName def overwriteExistingFile = true copyFile(winStartScript, winStartScriptCopy, overwriteExistingFile) //:init modifyFile(winStartScript) { // javaw.exe doesn't have a console if (it.contains("java.exe")) { return it.replace("java.exe", "javaw.exe") } if (it.contains("#HACKHACKHACK#")) { return it.replace("#HACKHACKHACK#", "%APP_HOME%") } // Command that launches the app else if (it.startsWith("\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS%")) { return "start \"\" /b " + it } else if (it.startsWith("set DEFAULT_JVM_OPTS=")) { return it + " -Dlog4j.skipJansi=false \"-javaagent:%APP_HOME%/lib/jar-loader.jar\"" } else if (it.startsWith(":init")) { //HACK return it + "\n" + "set VLC_PLUGIN_PATH=%APP_HOME%\\lib\\vlcbinaries\\plugins" } // Leave the line unchanged else { return it } } modifyFile(linuxStartScript) { if (it.startsWith("DEFAULT_JVM_OPTS=\"\"")) { return "DEFAULT_JVM_OPTS=\"-Dlog4j.skipJansi=false -javaagent:\$APP_HOME/lib/jar-loader.jar\"\nexport LD_LIBRARY_PATH=\$LD_LIBRARY_PATH:\$APP_HOME/lib/vlcbinaries/lib"; } if (it.contains("#HACKHACKHACK#")) { return it.replace("#HACKHACKHACK#", "\$APP_HOME") } // Leave the line unchanged else { return it } } modifyFile(winStartScriptCopy) { if (it.startsWith(":init")) { //HACK return it + "\n" + "set VLC_PLUGIN_PATH=%APP_HOME%\\lib\\vlcbinaries\\plugins" } else if (it.startsWith("set DEFAULT_JVM_OPTS=")) { return it + " -Dlog4j.skipJansi=false \"-javaagent:%APP_HOME%/lib/jar-loader.jar\"" } // Leave the line unchanged else { return it } } } } distZip { // Include the additional start script into(project.name + "-" + project.version + "/bin/") { from(startScripts.outputDir) include '*c.bat' } into(project.name + "-" + project.version + "/plugins/") { from project(':iZplPlugins:GameRadio').jar from project(':iZplPlugins:WMP').fatJar from project(':iZplPlugins:Editor').jar from project(':iZplPlugins:rtsslink').jar from project(':iZplPlugins:JukeBox').jar from project(':iZplPlugins:Extractor').jar from project(':iZplPlugins:discordjukebox').jar } duplicatesStrategy = 'include' } task apiJar(type: Jar, dependsOn: compileJava) { baseName = project.name + '-apistub' from sourceSets.main.output include '**/iZpl/API/*' } sourceSets { main { resources { exclude '**/*.xcf' } } steamdeck { resources { exclude '**/*.xcf' } } } dependencies { api fileTree(dir: 'lib', include: '*.jar') //api "net.rubygrapefruit:native-platform:0.9" api "commons-io:commons-io:2.+" api 'org.apache.commons:commons-exec:1.3' api "org.yaml:snakeyaml:1.14" api "commons-net:commons-net:3.3" api 'uk.co.caprica:vlcj:4.7.3' api 'com.googlecode.mp4parser:isoparser:1.0-RC-1' api 'net.java.truevfs:truevfs-profile-default_2.11:0.12.0' api 'commons-cli:commons-cli:1.3' api group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.+' api group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.+' api group: 'org.apache.logging.log4j', name: 'log4j-iostreams', version: '2.+' api group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.+' api group: 'org.apache.logging.log4j', name: 'log4j-jul', version: '2.+' api 'org.fusesource.jansi:jansi:1.11' api 'org.jgrapht:jgrapht-core:0.9.0' api(project(':external:java-progressbar')) api(project(':ToolKit')) { transitive = false } api(project(':izpl-shared')) api 'org.java-websocket:Java-WebSocket:1.5.3' api 'com.fasterxml.jackson.core:jackson-databind:2+' } configurations { apistub } artifacts { apistub apiJar }