build.gradle 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171
  1. evaluationDependsOn(':iZplPlugins:GameRadio')
  2. evaluationDependsOn(':iZplPlugins:WMP')
  3. evaluationDependsOn(':iZplPlugins:Editor')
  4. evaluationDependsOn(':iZplPlugins:rtsslink')
  5. evaluationDependsOn(':iZplPlugins:JukeBox')
  6. evaluationDependsOn(':iZplPlugins:Extractor')
  7. evaluationDependsOn(':iZplPlugins:discordjukebox')
  8. defaultTasks 'distZip'
  9. apply plugin: 'java-library'
  10. apply plugin: 'application'
  11. apply from: "$rootDir/utils/IO.gradle"
  12. version = '0.11.0.0-SNAPSHOT'
  13. mainClassName = 'de.nplusc.izc.iZpl.Main'
  14. //'de.nplusc.izc.iZpl.Main'
  15. jar {
  16. manifest {
  17. attributes 'Implementation-Title': 'iZPlaylist',
  18. 'Implementation-Version': version,
  19. 'Main-Class': 'de.nplusc.izc.iZpl.Main'
  20. }
  21. }
  22. java {
  23. toolchain {
  24. sourceCompatibility = JavaLanguageVersion.of(17)
  25. targetCompatibility = JavaLanguageVersion.of(17)
  26. }
  27. }
  28. startScripts {
  29. doLast {
  30. defaultJvmOpts = ["-Dlog4j.skipJansi=false", "-javaagent:#HACKHACKHACK#/lib/jar-loader.jar"]
  31. // fahr zur hölle Log5J
  32. def startScriptDir = outputDir.getAbsolutePath()
  33. def winStartScript = startScriptDir + "/" + applicationName + ".bat"
  34. def winStartScriptCopy = startScriptDir + "/" + applicationName + "c.bat"
  35. def linuxStartScript = startScriptDir + "/" + applicationName
  36. def overwriteExistingFile = true
  37. copyFile(winStartScript, winStartScriptCopy, overwriteExistingFile)
  38. //:init
  39. modifyFile(winStartScript) {
  40. // javaw.exe doesn't have a console
  41. if (it.contains("java.exe")) {
  42. return it.replace("java.exe", "javaw.exe")
  43. }
  44. if (it.contains("#HACKHACKHACK#")) {
  45. return it.replace("#HACKHACKHACK#", "%APP_HOME%")
  46. }
  47. // Command that launches the app
  48. else if (it.startsWith("\"%JAVA_EXE%\" %DEFAULT_JVM_OPTS%")) {
  49. return "start \"\" /b " + it
  50. } else if (it.startsWith("set DEFAULT_JVM_OPTS=")) {
  51. return it + " -Dlog4j.skipJansi=false \"-javaagent:%APP_HOME%/lib/jar-loader.jar\""
  52. } else if (it.startsWith(":init")) {
  53. //HACK
  54. return it + "\n" + "set VLC_PLUGIN_PATH=%APP_HOME%\\lib\\vlcbinaries\\plugins"
  55. }
  56. // Leave the line unchanged
  57. else {
  58. return it
  59. }
  60. }
  61. modifyFile(linuxStartScript) {
  62. if (it.startsWith("DEFAULT_JVM_OPTS=\"\"")) {
  63. 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";
  64. }
  65. if (it.contains("#HACKHACKHACK#")) {
  66. return it.replace("#HACKHACKHACK#", "\$APP_HOME")
  67. }
  68. // Leave the line unchanged
  69. else {
  70. return it
  71. }
  72. }
  73. modifyFile(winStartScriptCopy) {
  74. if (it.startsWith(":init")) {
  75. //HACK
  76. return it + "\n" + "set VLC_PLUGIN_PATH=%APP_HOME%\\lib\\vlcbinaries\\plugins"
  77. } else if (it.startsWith("set DEFAULT_JVM_OPTS=")) {
  78. return it + " -Dlog4j.skipJansi=false \"-javaagent:%APP_HOME%/lib/jar-loader.jar\""
  79. }
  80. // Leave the line unchanged
  81. else {
  82. return it
  83. }
  84. }
  85. }
  86. }
  87. distZip {
  88. // Include the additional start script
  89. into(project.name + "-" + project.version + "/bin/") {
  90. from(startScripts.outputDir)
  91. include '*c.bat'
  92. }
  93. into(project.name + "-" + project.version + "/plugins/") {
  94. from project(':iZplPlugins:GameRadio').jar
  95. from project(':iZplPlugins:WMP').fatJar
  96. from project(':iZplPlugins:Editor').jar
  97. from project(':iZplPlugins:rtsslink').jar
  98. from project(':iZplPlugins:JukeBox').jar
  99. from project(':iZplPlugins:Extractor').jar
  100. from project(':iZplPlugins:discordjukebox').jar
  101. }
  102. duplicatesStrategy = 'include'
  103. }
  104. task apiJar(type: Jar, dependsOn: compileJava) {
  105. baseName = project.name + '-apistub'
  106. from sourceSets.main.output
  107. include '**/iZpl/API/*'
  108. }
  109. sourceSets {
  110. main {
  111. resources {
  112. exclude '**/*.xcf'
  113. }
  114. }
  115. steamdeck {
  116. resources {
  117. exclude '**/*.xcf'
  118. }
  119. }
  120. }
  121. dependencies {
  122. api fileTree(dir: 'lib', include: '*.jar')
  123. //api "net.rubygrapefruit:native-platform:0.9"
  124. api "commons-io:commons-io:2.+"
  125. api 'org.apache.commons:commons-exec:1.3'
  126. api "org.yaml:snakeyaml:1.14"
  127. api "commons-net:commons-net:3.3"
  128. api 'uk.co.caprica:vlcj:4.7.3'
  129. api 'com.googlecode.mp4parser:isoparser:1.0-RC-1'
  130. api 'net.java.truevfs:truevfs-profile-default_2.11:0.12.0'
  131. api 'commons-cli:commons-cli:1.3'
  132. api group: 'org.apache.logging.log4j', name: 'log4j-api', version: '2.+'
  133. api group: 'org.apache.logging.log4j', name: 'log4j-core', version: '2.+'
  134. api group: 'org.apache.logging.log4j', name: 'log4j-iostreams', version: '2.+'
  135. api group: 'org.apache.logging.log4j', name: 'log4j-slf4j-impl', version: '2.+'
  136. api group: 'org.apache.logging.log4j', name: 'log4j-jul', version: '2.+'
  137. api 'org.fusesource.jansi:jansi:1.11'
  138. api 'org.jgrapht:jgrapht-core:0.9.0'
  139. api(project(':external:java-progressbar'))
  140. api(project(':ToolKit')) {
  141. transitive = false
  142. }
  143. api(project(':izpl-shared'))
  144. api 'org.java-websocket:Java-WebSocket:1.5.3'
  145. api 'com.fasterxml.jackson.core:jackson-databind:2+'
  146. }
  147. configurations {
  148. apistub
  149. }
  150. artifacts {
  151. apistub apiJar
  152. }