build.gradle 5.6 KB

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