sparrow/build.gradle

482 lines
22 KiB
Groovy
Raw Normal View History

2020-03-22 08:12:07 +00:00
plugins {
id 'application'
id 'org-openjfx-javafxplugin'
id 'org.beryx.jlink' version '3.1.3'
2025-08-07 09:28:27 +00:00
id 'org.gradlex.extra-java-module-info' version '1.13'
2025-05-20 17:45:43 +00:00
id 'io.matthewnelson.kmp.tor.resource-filterjar' version '408.16.3'
2020-03-22 08:12:07 +00:00
}
2020-08-25 13:31:04 +00:00
def os = org.gradle.internal.os.OperatingSystem.current()
def osName = os.getFamilyName()
if(os.macOsX) {
2020-09-14 08:51:38 +00:00
osName = "osx"
2020-08-25 13:31:04 +00:00
}
2022-05-06 15:34:23 +00:00
def osArch = "x64"
2022-10-25 10:02:00 +00:00
def releaseArch = "x86_64"
2022-05-06 15:34:23 +00:00
if(System.getProperty("os.arch") == "aarch64") {
osArch = "aarch64"
2022-10-25 10:02:00 +00:00
releaseArch = "aarch64"
2022-05-06 15:34:23 +00:00
}
def headless = "true".equals(System.getProperty("java.awt.headless"))
2025-08-07 09:28:27 +00:00
group = 'com.sparrowwallet'
2025-10-03 09:53:27 +00:00
version = '2.3.1'
2020-03-22 08:12:07 +00:00
repositories {
mavenCentral()
2025-08-07 09:28:27 +00:00
maven { url = uri('https://code.sparrowwallet.com/api/packages/sparrowwallet/maven') }
2020-03-22 08:12:07 +00:00
}
tasks.withType(AbstractArchiveTask).configureEach {
useFileSystemPermissions()
}
2020-03-22 08:12:07 +00:00
javafx {
version = headless ? "18" : "23.0.2"
2020-04-29 10:03:44 +00:00
modules = [ 'javafx.controls', 'javafx.fxml', 'javafx.swing', 'javafx.graphics' ]
2020-03-22 08:12:07 +00:00
}
2020-04-01 11:26:40 +00:00
java {
disableAutoTargetJvm()
}
2020-03-22 08:12:07 +00:00
dependencies {
2021-07-21 13:30:46 +00:00
//Any changes to the dependencies must be reflected in the module definitions below!
implementation(project(':drongo'))
2025-01-21 08:00:38 +00:00
implementation(project(':lark'))
2025-09-29 12:34:07 +00:00
implementation('com.google.guava:guava:33.5.0-jre')
implementation('com.google.code.gson:gson:2.9.1')
2022-07-13 12:06:29 +00:00
implementation('com.h2database:h2:2.1.214')
implementation('com.zaxxer:HikariCP:4.0.3') {
exclude group: 'org.slf4j'
}
implementation('org.jdbi:jdbi3-core:3.49.5') {
exclude group: 'org.slf4j'
}
implementation('org.jdbi:jdbi3-sqlobject:3.49.5') {
exclude group: 'org.slf4j'
}
2025-02-06 07:37:51 +00:00
implementation('org.flywaydb:flyway-core:9.22.3')
2025-09-29 11:32:56 +00:00
implementation('org.fxmisc.richtext:richtextfx:0.11.6')
2020-04-01 11:26:40 +00:00
implementation('no.tornado:tornadofx-controls:1.0.4')
implementation('com.google.zxing:javase:3.4.0') {
exclude group: 'com.beust', module: 'jcommander'
}
2024-11-20 11:09:28 +00:00
implementation('org.jcommander:jcommander:2.0')
implementation('com.github.arteam:simple-json-rpc-core:1.3')
implementation('com.github.arteam:simple-json-rpc-client:1.3') {
exclude group: 'com.github.arteam', module: 'simple-json-rpc-core'
}
implementation('com.github.arteam:simple-json-rpc-server:1.3') {
2020-06-09 09:21:34 +00:00
exclude group: 'org.slf4j'
}
2024-09-20 09:00:28 +00:00
implementation('com.fasterxml.jackson.core:jackson-databind:2.17.2')
2024-10-28 07:48:11 +00:00
implementation('com.sparrowwallet:hummingbird:1.7.4')
implementation('co.nstant.in:cbor:0.9')
2025-10-21 13:55:32 +00:00
implementation('org.openpnp:openpnp-capture-java:0.0.30-1')
implementation("io.matthewnelson.kmp-tor:runtime:2.2.1")
implementation("io.matthewnelson.kmp-tor:resource-exec-tor-gpl:408.16.3")
2025-04-17 12:17:26 +00:00
implementation('org.jetbrains.kotlinx:kotlinx-coroutines-javafx:1.10.1') {
exclude group: 'org.jetbrains.kotlin', module: 'kotlin-stdlib-common'
}
2025-10-06 12:52:24 +00:00
implementation('de.jangassen:nsmenufx:3.1.0') {
exclude group: 'net.java.dev.jna', module: 'jna'
}
2021-05-19 06:41:15 +00:00
implementation('org.controlsfx:controlsfx:11.1.0' ) {
2020-04-01 11:26:40 +00:00
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.8')
2021-02-16 09:57:34 +00:00
implementation('net.sourceforge.javacsv:javacsv:2.0')
implementation ('org.slf4j:slf4j-api:2.0.12')
implementation('org.slf4j:jul-to-slf4j:2.0.12') {
exclude group: 'org.slf4j'
}
implementation('com.sparrowwallet.bokmakierie:bokmakierie:1.0')
2024-11-28 09:03:49 +00:00
implementation('com.sparrowwallet:tern:1.0.6')
implementation('io.reactivex.rxjava2:rxjava:2.2.15')
implementation('io.reactivex.rxjava2:rxjavafx:2.2.2')
2025-09-29 12:34:07 +00:00
implementation('org.apache.commons:commons-lang3:3.19.0')
2024-09-20 09:00:28 +00:00
implementation('org.apache.commons:commons-compress:1.27.1')
implementation('net.sourceforge.streamsupport:streamsupport:1.7.0')
implementation('com.github.librepdf:openpdf:1.3.30')
implementation('com.googlecode.lanterna:lanterna:3.1.3')
implementation('net.coobird:thumbnailator:0.4.18')
2024-10-10 07:07:12 +00:00
implementation('com.github.hervegirod:fxsvgimage:1.1')
2023-01-05 10:17:49 +00:00
implementation('com.sparrowwallet:toucan:0.9.0')
implementation('com.jcraft:jzlib:1.1.3')
2025-10-24 07:38:11 +00:00
implementation('io.github.doblon8:jzbar:0.2.1')
testImplementation('org.junit.jupiter:junit-jupiter-api:5.10.0')
2024-02-15 08:26:29 +00:00
testRuntimeOnly('org.junit.jupiter:junit-jupiter-engine:5.10.0')
testRuntimeOnly('org.junit.platform:junit-platform-launcher')
2020-03-22 08:12:07 +00:00
}
2020-06-05 11:29:43 +00:00
compileJava {
options.with {
fork = true
2020-08-29 18:06:50 +00:00
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"])
2020-06-05 11:29:43 +00:00
}
}
2020-08-25 13:31:04 +00:00
processResources {
doLast {
2020-09-14 08:51:38 +00:00
delete fileTree("$buildDir/resources/main/native").matching {
2022-05-06 15:34:23 +00:00
exclude "${osName}/${osArch}/**"
2020-08-25 13:31:04 +00:00
}
}
}
test {
2024-02-15 08:26:29 +00:00
useJUnitPlatform()
jvmArgs = ["--add-opens=java.base/java.io=ALL-UNNAMED", "--add-opens=java.base/java.io=com.google.gson", "--add-reads=org.flywaydb.core=java.desktop"]
}
2024-01-29 12:35:58 +00:00
application {
mainModule = 'com.sparrowwallet.sparrow'
mainClass = 'com.sparrowwallet.sparrow.SparrowWallet'
applicationDefaultJvmArgs = ["-XX:+HeapDumpOnOutOfMemoryError",
2025-09-29 11:32:56 +00:00
"--enable-native-access=com.sparrowwallet.drongo",
2025-09-29 15:39:48 +00:00
"--enable-native-access=com.sun.jna",
2025-09-29 11:32:56 +00:00
"--enable-native-access=javafx.graphics",
"--enable-native-access=com.fazecast.jSerialComm",
"--enable-native-access=org.usb4java",
2025-07-09 10:46:57 +00:00
"--enable-native-access=io.github.doblon8.jzbar",
"--add-opens=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls",
2020-06-05 14:05:13 +00:00
"--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",
2020-06-05 15:25:55 +00:00
"--add-opens=org.controlsfx.controls/impl.org.controlsfx.skin=com.sparrowwallet.sparrow",
"--add-opens=org.controlsfx.controls/impl.org.controlsfx.skin=javafx.fxml",
2020-08-29 18:06:50 +00:00
"--add-opens=javafx.graphics/com.sun.glass.ui=com.sparrowwallet.sparrow",
2020-09-14 08:51:38 +00:00
"--add-opens=javafx.graphics/com.sun.javafx.application=com.sparrowwallet.sparrow",
"--add-opens=javafx.graphics/javafx.scene.input=com.sparrowwallet.sparrow",
2021-09-07 09:51:14 +00:00
"--add-opens=java.base/java.net=com.sparrowwallet.sparrow",
"--add-opens=java.base/java.io=com.google.gson",
"--add-opens=java.smartcardio/sun.security.smartcardio=com.sparrowwallet.sparrow",
2024-10-10 07:04:01 +00:00
"--add-reads=kotlin.stdlib=kotlinx.coroutines.core",
"--add-reads=org.flywaydb.core=java.desktop"]
2020-08-27 13:23:42 +00:00
if(os.macOsX) {
2025-10-06 12:52:24 +00:00
applicationDefaultJvmArgs += ["-Dprism.lcdtext=false", "-Xdock:name=Sparrow"]
2020-08-27 13:23:42 +00:00
}
if(headless) {
applicationDefaultJvmArgs += ["-Dglass.platform=Monocle", "-Dmonocle.platform=Headless", "-Dprism.order=sw"]
}
2020-04-02 10:54:41 +00:00
}
2020-04-01 11:26:40 +00:00
jlink {
mergedModule {
2020-08-02 15:54:51 +00:00
requires 'javafx.graphics'
requires 'javafx.controls'
requires 'java.xml'
requires 'java.logging'
2020-08-02 15:54:51 +00:00
requires 'javafx.base'
2020-08-05 10:36:50 +00:00
requires 'jdk.crypto.cryptoki'
2020-09-14 08:51:38 +00:00
requires 'java.management'
requires 'io.leangen.geantyref'
2021-09-05 13:47:15 +00:00
uses 'org.eclipse.jetty.http.HttpFieldPreEncoder'
2020-04-01 11:26:40 +00:00
}
2024-08-09 07:45:23 +00:00
options = ['--strip-native-commands', '--strip-java-debug-attributes', '--compress', 'zip-6', '--no-header-files', '--no-man-pages', '--ignore-signing-information', '--exclude-files', '**.png', '--exclude-resources', 'glob:/com.sparrowwallet.merged.module/META-INF/*']
2020-04-01 11:26:40 +00:00
launcher {
name = 'sparrow'
2025-09-29 11:32:56 +00:00
jvmArgs = ["--enable-native-access=com.sparrowwallet.drongo",
2025-09-29 15:39:48 +00:00
"--enable-native-access=com.sun.jna",
2025-09-29 11:32:56 +00:00
"--enable-native-access=javafx.graphics",
"--enable-native-access=com.sparrowwallet.merged.module",
"--enable-native-access=com.fazecast.jSerialComm",
"--enable-native-access=org.usb4java",
"--enable-native-access=io.github.doblon8.jzbar",
2025-07-09 10:46:57 +00:00
"--add-opens=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls",
2020-06-05 14:05:13 +00:00
"--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",
2020-06-05 15:25:55 +00:00
"--add-opens=org.controlsfx.controls/impl.org.controlsfx.skin=com.sparrowwallet.sparrow",
"--add-opens=org.controlsfx.controls/impl.org.controlsfx.skin=javafx.fxml",
2020-08-29 18:06:50 +00:00
"--add-opens=javafx.graphics/com.sun.glass.ui=com.sparrowwallet.sparrow",
"--add-opens=javafx.graphics/javafx.scene.input=com.sparrowwallet.sparrow",
2020-08-29 18:06:50 +00:00
"--add-opens=javafx.graphics/com.sun.javafx.application=com.sparrowwallet.sparrow",
2020-09-14 08:51:38 +00:00
"--add-opens=java.base/java.net=com.sparrowwallet.sparrow",
2021-09-07 09:51:14 +00:00
"--add-opens=java.base/java.io=com.google.gson",
"--add-opens=java.smartcardio/sun.security.smartcardio=com.sparrowwallet.sparrow",
"--add-reads=com.sparrowwallet.merged.module=java.desktop",
2021-06-15 14:50:05 +00:00
"--add-reads=com.sparrowwallet.merged.module=java.sql",
"--add-reads=com.sparrowwallet.merged.module=com.sparrowwallet.sparrow",
"--add-reads=com.sparrowwallet.merged.module=ch.qos.logback.classic",
"--add-reads=com.sparrowwallet.merged.module=org.slf4j",
2021-09-05 13:47:15 +00:00
"--add-reads=com.sparrowwallet.merged.module=com.fasterxml.jackson.databind",
"--add-reads=com.sparrowwallet.merged.module=com.fasterxml.jackson.annotation",
"--add-reads=com.sparrowwallet.merged.module=com.fasterxml.jackson.core",
"--add-reads=com.sparrowwallet.merged.module=co.nstant.in.cbor",
"--add-reads=com.sparrowwallet.merged.module=org.bouncycastle.pg",
"--add-reads=com.sparrowwallet.merged.module=org.bouncycastle.provider",
"--add-reads=com.sparrowwallet.merged.module=kotlin.stdlib",
2025-09-29 11:32:56 +00:00
"--add-reads=com.sparrowwallet.merged.module=org.reactfx.reactfx",
2024-10-10 07:04:01 +00:00
"--add-reads=kotlin.stdlib=kotlinx.coroutines.core",
"--add-reads=org.flywaydb.core=java.desktop"]
if(os.windows) {
jvmArgs += ["-Djavax.accessibility.assistive_technologies", "-Djavax.accessibility.screen_magnifier_present=false"]
}
if(os.macOsX) {
2025-10-06 12:52:24 +00:00
jvmArgs += ["-Dprism.lcdtext=false", "--add-opens=javafx.graphics/com.sun.glass.ui.mac=com.sparrowwallet.merged.module"]
}
if(headless) {
jvmArgs += ["-Dglass.platform=Monocle", "-Dmonocle.platform=Headless", "-Dprism.order=sw"]
}
2020-04-01 11:26:40 +00:00
}
addExtraDependencies("javafx")
2020-04-02 10:54:41 +00:00
jpackage {
imageName = "Sparrow"
2022-10-25 08:23:17 +00:00
installerName = "Sparrow"
appVersion = "${version}"
skipInstaller = os.macOsX || properties.skipInstallers
2020-04-02 10:54:41 +00:00
imageOptions = []
installerOptions = ['--file-associations', 'src/main/deploy/psbt.properties', '--file-associations', 'src/main/deploy/txn.properties', '--file-associations', 'src/main/deploy/asc.properties', '--file-associations', 'src/main/deploy/bitcoin.properties', '--file-associations', 'src/main/deploy/auth47.properties', '--file-associations', 'src/main/deploy/lightning.properties', '--license-file', 'LICENSE']
2020-08-25 13:31:04 +00:00
if(os.windows) {
installerOptions += ['--win-per-user-install', '--win-dir-chooser', '--win-menu', '--win-menu-group', 'Sparrow', '--win-shortcut', '--resource-dir', 'src/main/deploy/package/windows/']
2020-08-25 13:31:04 +00:00
imageOptions += ['--icon', 'src/main/deploy/package/windows/sparrow.ico']
installerType = "msi"
2020-08-25 17:30:19 +00:00
}
if(os.linux) {
if(headless) {
installerName = "sparrowserver"
installerOptions = ['--license-file', 'LICENSE']
} else {
installerName = "sparrowwallet"
installerOptions += ['--linux-shortcut', '--linux-menu-group', 'Sparrow']
}
installerOptions += ['--resource-dir', layout.buildDirectory.dir('deploy/package').get().asFile.toString(), '--linux-app-category', 'utils', '--linux-app-release', '1', '--linux-rpm-license-type', 'ASL 2.0', '--linux-deb-maintainer', 'mail@sparrowwallet.com']
2020-08-28 14:02:08 +00:00
imageOptions += ['--icon', 'src/main/deploy/package/linux/Sparrow.png', '--resource-dir', 'src/main/deploy/package/linux/']
2020-04-02 10:54:41 +00:00
}
2020-08-25 13:31:04 +00:00
if(os.macOsX) {
2020-04-14 07:37:14 +00:00
installerOptions += ['--mac-sign', '--mac-signing-key-user-name', 'Craig Raw (UPLVMSK9D7)']
2020-09-14 08:51:38 +00:00
imageOptions += ['--icon', 'src/main/deploy/package/osx/sparrow.icns', '--resource-dir', 'src/main/deploy/package/osx/']
2020-04-02 10:54:41 +00:00
installerType = "dmg"
}
}
2025-01-21 11:11:19 +00:00
if(os.linux) {
jpackageImage {
dependsOn('prepareModulesDir', 'copyUdevRules')
}
}
2020-04-01 11:26:40 +00:00
}
2025-01-21 11:11:19 +00:00
if(os.linux) {
tasks.jlink.finalizedBy('addUserWritePermission', 'copyUdevRules')
tasks.jpackageImage.finalizedBy('prepareResourceDir')
2025-01-21 11:11:19 +00:00
} else {
tasks.jlink.finalizedBy('addUserWritePermission')
}
2025-01-21 11:11:19 +00:00
tasks.register('addUserWritePermission', Exec) {
if(os.windows) {
def usersGroup = '*S-1-5-32-545' // Windows "Users" group SID (language-independent)
commandLine 'icacls', "$buildDir\\image\\legal", '/grant', "${usersGroup}:(OI)(CI)F", '/T'
} else {
2024-04-18 07:45:58 +00:00
commandLine 'chmod', '-R', 'u+w', "$buildDir/image/legal"
}
}
2025-01-21 11:11:19 +00:00
tasks.register('copyUdevRules', Copy) {
from('lark/src/main/resources/udev')
into(layout.buildDirectory.dir('image/conf/udev'))
include('*')
}
tasks.register('prepareResourceDir', Copy) {
from("src/main/deploy/package/linux${headless ? '-headless' : ''}")
into(layout.buildDirectory.dir('deploy/package'))
include('*')
2025-05-15 08:00:03 +00:00
eachFile { file ->
if(file.name.equals('control') || file.name.endsWith('.spec')) {
filter { line ->
if(line.contains('${size}')) {
line = line.replace('${size}', getDirectorySize(layout.buildDirectory.dir('jpackage/Sparrow').get().asFile))
}
return line.replace('${version}', "${version}").replace('${arch}', osArch == 'aarch64' ? 'arm64' : 'amd64')
}
}
}
}
static def getDirectorySize(File directory) {
long size = 0
if(directory.isFile()) {
size = directory.length()
} else if(directory.isDirectory()) {
directory.eachFileRecurse { file ->
if(file.isFile()) {
size += file.length()
}
}
}
return Long.toString(size/1024 as long)
}
2025-01-21 11:11:19 +00:00
tasks.register('removeGroupWritePermission', Exec) {
2021-03-20 12:48:24 +00:00
commandLine 'chmod', '-R', 'g-w', "$buildDir/jpackage/Sparrow"
}
2025-01-21 11:11:19 +00:00
tasks.register('packageZipDistribution', Zip) {
archiveFileName = "Sparrow-${version}.zip"
destinationDirectory = file("$buildDir/jpackage")
preserveFileTimestamps = os.macOsX
2021-03-20 12:48:24 +00:00
from("$buildDir/jpackage/") {
include "Sparrow/**"
2022-06-07 13:01:00 +00:00
include "Sparrow.app/**"
2021-03-20 12:48:24 +00:00
}
}
2025-01-21 11:11:19 +00:00
tasks.register('packageTarDistribution', Tar) {
2021-03-20 12:48:24 +00:00
dependsOn removeGroupWritePermission
archiveFileName = "sparrow${headless ? 'server': 'wallet'}-${version}-${releaseArch}.tar.gz"
destinationDirectory = file("$buildDir/jpackage")
compression = Compression.GZIP
2021-03-20 12:48:24 +00:00
from("$buildDir/jpackage/") {
include "Sparrow/**"
}
}
extraJavaModuleInfo {
module('no.tornado:tornadofx-controls', 'tornadofx.controls') {
exports('tornadofx.control')
requires('javafx.controls')
}
module('com.github.arteam:simple-json-rpc-core', 'simple.json.rpc.core') {
exports('com.github.arteam.simplejsonrpc.core.annotation')
exports('com.github.arteam.simplejsonrpc.core.domain')
requires('com.fasterxml.jackson.core')
requires('com.fasterxml.jackson.annotation')
requires('com.fasterxml.jackson.databind')
requires('org.jetbrains.annotations')
}
module('com.github.arteam:simple-json-rpc-client', 'simple.json.rpc.client') {
exports('com.github.arteam.simplejsonrpc.client')
exports('com.github.arteam.simplejsonrpc.client.builder')
exports('com.github.arteam.simplejsonrpc.client.exception')
requires('com.fasterxml.jackson.core')
requires('com.fasterxml.jackson.databind')
requires('simple.json.rpc.core')
}
module('com.github.arteam:simple-json-rpc-server', 'simple.json.rpc.server') {
exports('com.github.arteam.simplejsonrpc.server')
requires('simple.json.rpc.core')
requires('com.google.common')
requires('org.slf4j')
requires('com.fasterxml.jackson.databind')
}
module('org.openpnp:openpnp-capture-java', 'openpnp.capture.java') {
exports('org.openpnp.capture')
exports('org.openpnp.capture.library')
requires('java.desktop')
requires('com.sun.jna')
}
module('net.sourceforge.javacsv:javacsv', 'net.sourceforge.javacsv') {
exports('com.csvreader')
}
module('com.google.guava:listenablefuture|empty-to-avoid-conflict-with-guava', 'com.google.guava.listenablefuture')
module('com.google.code.findbugs:jsr305', 'com.google.code.findbugs.jsr305')
module('j2objc-annotations-2.8.jar', 'com.google.j2objc.j2objc.annotations', '2.8')
module('org.fxmisc.richtext:richtextfx', 'org.fxmisc.richtext') {
exports('org.fxmisc.richtext')
exports('org.fxmisc.richtext.event')
exports('org.fxmisc.richtext.model')
requires('javafx.base')
requires('javafx.controls')
requires('javafx.graphics')
requires('org.fxmisc.flowless')
requires('org.reactfx.reactfx')
2025-09-29 11:32:56 +00:00
requires('org.fxmisc.undo')
requires('org.fxmisc.wellbehaved')
}
2025-09-29 11:32:56 +00:00
module('org.fxmisc.undo:undofx', 'org.fxmisc.undo') {
requires('javafx.base')
requires('javafx.controls')
requires('javafx.graphics')
requires('org.reactfx.reactfx')
}
module('org.fxmisc.flowless:flowless', 'org.fxmisc.flowless') {
exports('org.fxmisc.flowless')
requires('javafx.base')
requires('javafx.controls')
requires('javafx.graphics')
requires('org.reactfx.reactfx')
}
module('org.reactfx:reactfx', 'org.reactfx.reactfx') {
exports('org.reactfx')
exports('org.reactfx.value')
exports('org.reactfx.collection')
exports('org.reactfx.util')
requires('javafx.base')
requires('javafx.graphics')
requires('javafx.controls')
}
module('io.reactivex.rxjava2:rxjavafx', 'io.reactivex.rxjava2fx') {
exports('io.reactivex.rxjavafx.schedulers')
requires('io.reactivex.rxjava2')
requires('javafx.graphics')
}
module('org.flywaydb:flyway-core', 'org.flywaydb.core') {
2024-10-10 07:04:01 +00:00
exports('org.flywaydb.core')
exports('org.flywaydb.core.api')
exports('org.flywaydb.core.api.exception')
exports('org.flywaydb.core.api.configuration')
uses('org.flywaydb.core.extensibility.Plugin')
requires('java.sql')
}
module('org.fxmisc.wellbehaved:wellbehavedfx', 'org.fxmisc.wellbehaved') {
requires('javafx.base')
requires('javafx.graphics')
}
module('com.github.jai-imageio:jai-imageio-core', 'com.github.jai.imageio.jai.imageio.core') {
requires('java.desktop')
}
module('co.nstant.in:cbor', 'co.nstant.in.cbor') {
exports('co.nstant.in.cbor')
exports('co.nstant.in.cbor.model')
exports('co.nstant.in.cbor.builder')
}
module('net.sourceforge.streamsupport:streamsupport', 'net.sourceforge.streamsupport') {
2021-08-12 15:50:13 +00:00
requires('jdk.unsupported')
exports('java8.util')
exports('java8.util.function')
exports('java8.util.stream')
}
module('net.coobird:thumbnailator', 'net.coobird.thumbnailator') {
exports('net.coobird.thumbnailator')
requires('java.desktop')
}
module('org.jcommander:jcommander', 'org.jcommander') {
exports('com.beust.jcommander')
}
2025-01-21 08:00:38 +00:00
module('com.sparrowwallet:hid4java', 'org.hid4java') {
requires('com.sun.jna')
exports('org.hid4java')
exports('org.hid4java.jna')
}
module('com.sparrowwallet:usb4java', 'org.usb4java') {
exports('org.usb4java')
}
module('com.jcraft:jzlib', 'com.jcraft.jzlib') {
exports('com.jcraft.jzlib')
}
}
kmpTorResourceFilterJar {
keepTorCompilation("current","current")
}