buildscript { repositories { jcenter() mavenLocal() maven { url "https://plugins.gradle.org/m2" } } dependencies { classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0' } } plugins { id 'application' id "com.github.johnrengelman.shadow" version "5.2.0" } repositories { jcenter() } sourceSets { main { java { srcDir 'src/main/java' } groovy { srcDir 'griffon-app/conf' srcDir 'griffon-app/controllers' srcDir 'griffon-app/lifecycle' srcDir 'griffon-app/models' srcDir 'griffon-app/resources' srcDir 'griffon-app/services' srcDir 'griffon-app/views' } resources { srcDir 'griffon-app/i18n' srcDir 'griffon-app/resources' } } test { java { srcDir 'src/test/java' } } } application { mainClassName = 'com.muwire.gui.Launcher' applicationName = 'MuWire' } run.doFirst { setDefaultArgs() } startScripts.doFirst { setDefaultArgs() } private void setDefaultArgs() { application.applicationDefaultJvmArgs = ["-Djava.util.logging.config.file=logging.properties", "-Xms256M", "-Xmx4g", "-XX:+UseParallelGC", "-XX:+HeapDumpOnOutOfMemoryError", "-XX:+ExitOnOutOfMemoryError", "--add-opens", "java.base/java.lang=ALL-UNNAMED", "--add-opens", "java.base/java.util=ALL-UNNAMED", "--add-opens", "java.base/sun.nio.fs=ALL-UNNAMED", "--add-opens", "java.base/java.nio=ALL-UNNAMED", "--add-opens", "java.desktop/java.awt=ALL-UNNAMED", "--add-opens", "java.desktop/javax.swing=ALL-UNNAMED", "--add-opens", "java.desktop/javax.swing.plaf.basic=ALL-UNNAMED", "--add-opens", "java.desktop/javax.swing.text.html=ALL-UNNAMED", "--add-opens", "java.desktop/javax.swing.tree=ALL-UNNAMED", "--add-opens", "java.desktop/com.sun.java.swing.plaf.gtk=ALL-UNNAMED", "--add-opens", "java.desktop/com.sun.java.swing.plaf.windows=ALL-UNNAMED", "--add-opens", "java.desktop/sun.swing=ALL-UNNAMED", "--add-exports", "java.desktop/com.apple.laf=ALL-UNNAMED"] } configurations.all { exclude group:'org.codehaus.groovy', module:'groovy-test' exclude group:'org.codehaus.groovy', module:'groovy-testng' exclude group:'org.codehaus.groovy', module:'groovy-test-junit5' exclude group:'org.codehaus.groovy', module:'groovy-ant' exclude group:'org.codehaus.groovy', module:'groovy-nio' exclude group:'org.codehaus.groovy', module:'groovy-servlet' exclude group:'org.codehaus.groovy', module:'groovy-jmx' exclude group:'org.codehaus.groovy', module:'groovy-groovydoc' exclude group:'org.codehaus.groovy', module:'groovy-groovysh' exclude group:'org.codehaus.groovy', module:'groovy-xml' exclude group:'org.codehaus.groovy', module:'groovy-docgenerator' // TODO: add more as discovered } dependencies { implementation project(":core") implementation "org.codehaus.griffon:griffon-swing-groovy:${griffonVersion}" implementation "org.codehaus.griffon:griffon-groovy:${griffonVersion}" implementation "org.codehaus.griffon:griffon-groovy-compile:${griffonVersion}" implementation "org.codehaus.griffon:griffon-swing:${griffonVersion}" implementation "org.codehaus.griffon:griffon-guice:${griffonVersion}" implementation "org.codehaus.griffon:griffon-core:${griffonVersion}" implementation "org.codehaus.griffon:griffon-core-compile:${griffonVersion}" implementation "org.codehaus.groovy:groovy-all:${groovyVersion}" implementation group: 'com.bulenkov', name: 'darcula', version: '2018.2' implementation 'com.jtattoo:JTattoo:1.6.13' implementation "net.java.dev.jna:jna:5.10.0" implementation 'net.java.dev.jna:jna-platform:5.10.0' implementation 'com.github.hypfvieh:dbus-java-parent:4.1.0' implementation 'com.github.hypfvieh:dbus-java-transport-jnr-unixsocket:4.1.0' implementation 'com.github.hypfvieh:dbus-java-transport-tcp:4.1.0' // runtime "org.slf4j:slf4j-simple:${slf4jVersion}" runtimeOnly group: 'org.slf4j', name: 'slf4j-jdk14', version: "${slf4jVersion}" runtimeOnly group: 'org.slf4j', name: 'slf4j-api', version: "${slf4jVersion}" runtimeOnly group: 'org.slf4j', name: 'jul-to-slf4j', version: "${slf4jVersion}" runtimeOnly "javax.annotation:javax.annotation-api:1.3.2" // because java 14 doesn't come with it runtimeOnly 'mrj:MRJToolkitStubs:1.0' testCompileOnly "org.codehaus.griffon:griffon-fest-test:${griffonVersion}" testCompileOnly "org.spockframework:spock-core:${spockVersion}" testCompileOnly('org.awaitility:awaitility-groovy:3.1.0') { exclude group: 'org.codehaus.groovy', module: 'groovy-all' } testCompileOnly "org.codehaus.groovy:groovy-all:${groovyVersion}" testImplementation 'org.junit.jupiter:junit-jupiter-api:5.4.2' testImplementation 'junit:junit:4.12' } tasks.withType(JavaCompile) { sourceCompatibility = project.sourceCompatibility targetCompatibility = project.targetCompatibility } tasks.withType(GroovyCompile) { sourceCompatibility = project.sourceCompatibility targetCompatibility = project.targetCompatibility } if (hasProperty('debugRun') && ((project.debugRun as boolean))) { run { jvmArgs '-Xdebug', '-Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005' } } import java.nio.file.Path import java.nio.file.Paths String className(File f, String prefix) { Path pwd = file(".").getAbsoluteFile().toPath() Path prefixPath = Paths.get(pwd.toString(),prefix) Path filePath = f.toPath() Path relative = prefixPath.relativize(filePath) String name = relative.toString() name.replace(File.separator,'.').substring(0, name.lastIndexOf(".") ) } task griffonManifest { doLast { def models = fileTree("griffon-app/models").getFiles().collect { className(it, "griffon-app/models") }.sort() def views = fileTree("griffon-app/views").getFiles().collect { className(it, "griffon-app/views") }.sort() def controllers = fileTree("griffon-app/controllers").getFiles().collect { className(it, "griffon-app/controllers") }.sort() def manifest = file("$buildDir/griffonManifest") manifest.mkdirs() def controllerFile = new File(manifest, "griffon.core.artifact.GriffonController") controllerFile.withPrintWriter("US-ASCII", {writer -> controllers.each {controller -> writer.print(controller) writer.print('\n') } }) def modelsFile = new File(manifest, "griffon.core.artifact.GriffonModel") modelsFile.withPrintWriter("US-ASCII", {writer -> models.each {model -> writer.print(model) writer.print('\n') } }) def viewsFile = new File(manifest, "griffon.core.artifact.GriffonView") viewsFile.withPrintWriter("US-ASCII", {writer -> views.each {view -> writer.print(view) writer.print('\n') } }) } } jar { dependsOn griffonManifest from("$buildDir/griffonManifest") { duplicatesStrategy = DuplicatesStrategy.INCLUDE into ("META-INF/griffon") } } shadowJar { from("shadow/services") { into ("META-INF/services") } }