plugins { id 'application' id 'org.openjfx.javafxplugin' version '0.0.9' id 'org.kordamp.gradle.jdeps' version '0.9.0' id 'org.beryx.jlink' version '2.22.0' } def sparrowVersion = '1.3.0' def os = org.gradle.internal.os.OperatingSystem.current() def osName = os.getFamilyName() if(os.macOsX) { osName = "osx" } group "com.sparrowwallet" version "${sparrowVersion}" repositories { mavenCentral() maven { url 'https://oss.sonatype.org/content/groups/public' } maven { url 'https://mymavenrepo.com/repo/29EACwkkGcoOKnbx3bxN/' } maven { url 'https://jitpack.io' } maven { url 'http://maven.openimaj.org/' } } tasks.withType(AbstractArchiveTask) { preserveFileTimestamps = false reproducibleFileOrder = true } javafx { version = "15" modules = [ 'javafx.controls', 'javafx.fxml', 'javafx.swing', 'javafx.graphics' ] } java { disableAutoTargetJvm() } dependencies { implementation(project(':drongo')) { exclude group: 'org.hamcrest' exclude group: 'junit' } implementation('com.google.guava:guava:28.2-jre') implementation('com.google.code.gson:gson:2.8.6') implementation('org.fxmisc.richtext:richtextfx:0.10.4') implementation('no.tornado:tornadofx-controls:1.0.4') implementation('com.google.zxing:javase:3.4.0') implementation('com.github.arteam:simple-json-rpc-client:1.0') implementation('com.github.arteam:simple-json-rpc-server:1.0') { exclude group: 'org.slf4j' } implementation('com.sparrowwallet:hummingbird:1.5.2') implementation('com.nativelibs4java:bridj:0.7-20140918-3') { exclude group: 'com.google.android.tools', module: 'dx' } implementation('com.github.sarxos:webcam-capture:0.3.13-SNAPSHOT') { exclude group: 'com.nativelibs4java', module: 'bridj' } implementation("com.sparrowwallet:netlayer-jpms-${osName}:0.6.8") implementation('de.codecentric.centerdevice:centerdevice-nsmenufx:2.1.7') implementation('org.controlsfx:controlsfx:11.0.2' ) { exclude group: 'org.openjfx', module: 'javafx-base' exclude group: 'org.openjfx', module: 'javafx-graphics' exclude group: 'org.openjfx', module: 'javafx-controls' exclude group: 'org.openjfx', module: 'javafx-swing' exclude group: 'org.openjfx', module: 'javafx-fxml' exclude group: 'org.openjfx', module: 'javafx-web' exclude group: 'org.openjfx', module: 'javafx-media' } implementation('dev.bwt:bwt-jni:0.1.7') implementation('net.sourceforge.javacsv:javacsv:2.0') testImplementation('junit:junit:4.12') } mainClassName = 'com.sparrowwallet.sparrow/com.sparrowwallet.sparrow.MainApp' compileJava { options.with { fork = true compilerArgs.addAll(["--add-exports", "org.controlsfx.controls/impl.org.controlsfx.skin=com.sparrowwallet.sparrow", "--add-exports", "javafx.graphics/com.sun.glass.ui=com.sparrowwallet.sparrow", "--add-exports", "javafx.graphics/com.sun.javafx.application=com.sparrowwallet.sparrow"]) } } processResources { doLast { delete fileTree("$buildDir/resources/main/native").matching { exclude "${osName}/**" } } } run { applicationDefaultJvmArgs = ["--add-opens=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls", "--add-opens=javafx.graphics/javafx.scene=org.controlsfx.controls", "--add-opens=javafx.controls/com.sun.javafx.scene.control.behavior=org.controlsfx.controls", "--add-opens=javafx.controls/com.sun.javafx.scene.control.inputmap=org.controlsfx.controls", "--add-opens=javafx.graphics/com.sun.javafx.scene.traversal=org.controlsfx.controls", "--add-opens=javafx.base/com.sun.javafx.event=org.controlsfx.controls", "--add-opens=javafx.controls/javafx.scene.control.cell=com.sparrowwallet.sparrow", "--add-opens=org.controlsfx.controls/impl.org.controlsfx.skin=com.sparrowwallet.sparrow", "--add-opens=javafx.graphics/com.sun.javafx.tk=centerdevice.nsmenufx", "--add-opens=javafx.graphics/com.sun.javafx.tk.quantum=centerdevice.nsmenufx", "--add-opens=javafx.graphics/com.sun.glass.ui=centerdevice.nsmenufx", "--add-opens=javafx.controls/com.sun.javafx.scene.control=centerdevice.nsmenufx", "--add-opens=javafx.graphics/com.sun.javafx.menu=centerdevice.nsmenufx", "--add-opens=javafx.graphics/com.sun.glass.ui=com.sparrowwallet.sparrow", "--add-opens=javafx.graphics/com.sun.javafx.application=com.sparrowwallet.sparrow", "--add-opens=java.base/java.net=com.sparrowwallet.sparrow"] if(os.macOsX) { applicationDefaultJvmArgs += ["-Xdock:name=Sparrow", "-Xdock:icon=/Users/scy/git/sparrow/src/main/resources/sparrow.png", "--add-opens=javafx.graphics/com.sun.glass.ui.mac=centerdevice.nsmenufx"] } } jlink { mergedModule { requires 'javafx.graphics' requires 'javafx.controls' requires 'java.xml' requires 'java.logging' requires 'javafx.base' requires 'com.fasterxml.jackson.databind' requires 'jdk.crypto.cryptoki' requires 'java.management' } options = ['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages', '--ignore-signing-information', '--exclude-files', '**.png'] launcher { name = 'sparrow' jvmArgs = ["--add-opens=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls", "--add-opens=javafx.graphics/javafx.scene=org.controlsfx.controls", "--add-opens=javafx.controls/com.sun.javafx.scene.control.behavior=org.controlsfx.controls", "--add-opens=javafx.controls/com.sun.javafx.scene.control.inputmap=org.controlsfx.controls", "--add-opens=javafx.graphics/com.sun.javafx.scene.traversal=org.controlsfx.controls", "--add-opens=javafx.base/com.sun.javafx.event=org.controlsfx.controls", "--add-opens=javafx.controls/javafx.scene.control.cell=com.sparrowwallet.sparrow", "--add-opens=org.controlsfx.controls/impl.org.controlsfx.skin=com.sparrowwallet.sparrow", "--add-opens=javafx.graphics/com.sun.javafx.tk=com.sparrowwallet.merged.module", "--add-opens=javafx.graphics/com.sun.javafx.tk.quantum=com.sparrowwallet.merged.module", "--add-opens=javafx.graphics/com.sun.glass.ui=com.sparrowwallet.merged.module", "--add-opens=javafx.controls/com.sun.javafx.scene.control=com.sparrowwallet.merged.module", "--add-opens=javafx.graphics/com.sun.javafx.menu=com.sparrowwallet.merged.module", "--add-opens=javafx.graphics/com.sun.glass.ui=com.sparrowwallet.sparrow", "--add-opens=javafx.graphics/com.sun.javafx.application=com.sparrowwallet.sparrow", "--add-opens=java.base/java.net=com.sparrowwallet.sparrow", "--add-reads=com.sparrowwallet.merged.module=java.desktop"] if(os.macOsX) { jvmArgs += "--add-opens=javafx.graphics/com.sun.glass.ui.mac=com.sparrowwallet.merged.module" } } addExtraDependencies("javafx") jpackage { imageName = "Sparrow" installerName = "Sparrow" appVersion = "${sparrowVersion}" skipInstaller = os.macOsX imageOptions = [] installerOptions = ['--file-associations', 'src/main/deploy/associations.properties', '--license-file', 'LICENSE'] if(os.windows) { installerOptions += ['--win-per-user-install', '--win-dir-chooser', '--win-menu', '--win-shortcut'] imageOptions += ['--icon', 'src/main/deploy/package/windows/sparrow.ico'] installerType = "exe" } if(os.linux) { installerOptions += ['--resource-dir', 'src/main/deploy/package/linux/', '--linux-shortcut', '--linux-rpm-license-type', 'ASL 2.0'] imageOptions += ['--icon', 'src/main/deploy/package/linux/Sparrow.png', '--resource-dir', 'src/main/deploy/package/linux/'] } if(os.macOsX) { installerOptions += ['--mac-sign', '--mac-signing-key-user-name', 'Craig Raw (UPLVMSK9D7)'] imageOptions += ['--icon', 'src/main/deploy/package/osx/sparrow.icns', '--resource-dir', 'src/main/deploy/package/osx/'] installerType = "dmg" } } }