diff --git a/build.gradle b/build.gradle index b07e37240e..f7d167eaa7 100644 --- a/build.gradle +++ b/build.gradle @@ -3,10 +3,11 @@ buildscript { gradlePluginPortal() } dependencies { - classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.10' + classpath 'com.google.protobuf:protobuf-gradle-plugin:0.8.17' classpath 'com.google.gradle:osdetector-gradle-plugin:1.6.0' classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0' - classpath 'org.springframework.boot:spring-boot-gradle-plugin:1.5.10.RELEASE' + classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.6.3' + classpath 'com.gradle:gradle-enterprise-gradle-plugin:3.7' // added for windows build verfication-metadata.xml error } } @@ -25,7 +26,7 @@ configure(subprojects) { // Apply the jacoco plugin to add support for test coverage apply plugin: 'jacoco' - sourceCompatibility = 1.10 + sourceCompatibility = JavaVersion.VERSION_11 ext { // in alphabetical order bcVersion = '1.63' @@ -39,12 +40,12 @@ configure(subprojects) { fontawesomefxVersion = '8.0.0' fontawesomefxCommonsVersion = '9.1.2' fontawesomefxMaterialdesignfontVersion = '2.0.26-9.1.2' - grpcVersion = '1.25.0' + grpcVersion = '1.42.1' gsonVersion = '2.8.5' - guavaVersion = '28.2-jre' + guavaVersion = '30.1.1-jre' + guiceVersion = '4.2.2' moneroJavaVersion = '0.7.4' httpclient5Version = '5.0' - guiceVersion = '4.2.2' hamcrestVersion = '1.3' httpclientVersion = '4.5.12' httpcoreVersion = '4.4.13' @@ -66,15 +67,15 @@ configure(subprojects) { logbackVersion = '1.1.11' loggingVersion = '1.2' lombokVersion = '1.18.24' - mockitoVersion = '3.5.15' - netlayerVersion = '6797461310f077bbea4f43a3a509c077b0ed8c34' // Netlayer version 0.7.3 with Tor browser version 11.0.14 and tor binary version: 0.4.7.7 - protobufVersion = '3.10.0' + mockitoVersion = '4.0.0' + netlayerVersion = '6797461310f077bbea4f43a3a509c077b0ed8c34' // Netlayer version 0.7.3 with Tor browser version 11.0.14 and tor binary version: 0.4.7.7 + protobufVersion = '3.19.1' protocVersion = protobufVersion pushyVersion = '0.13.2' qrgenVersion = '1.3' slf4jVersion = '1.7.30' sparkVersion = '2.5.2' - springBootVersion = '1.5.10.RELEASE' + springBootVersion = '2.5.6' os = osdetector.os == 'osx' ? 'mac' : osdetector.os == 'windows' ? 'win' : osdetector.os } @@ -87,7 +88,7 @@ configure(subprojects) { } dependencies { - testCompile "junit:junit:$junitVersion" + testImplementation "junit:junit:$junitVersion" } tasks.withType(JavaCompile) { @@ -151,7 +152,7 @@ configure([project(':cli'), def unixScriptFile = file("${rootProject.projectDir}/haveno-$applicationName") unixScriptFile.text = unixScriptFile.text.replace( - 'cd "`dirname \\"$PRG\\"`/.." >/dev/null', 'cd "`dirname \\"$PRG\\"`" >/dev/null') + 'APP_HOME=$( cd "${APP_HOME:-./}.." && pwd -P ) || exit', 'APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit') if (applicationName == 'desktop') { def script = file("${rootProject.projectDir}/haveno-$applicationName") @@ -186,22 +187,22 @@ configure(project(':proto')) { apply plugin: 'com.google.protobuf' dependencies { + annotationProcessor "org.projectlombok:lombok:$lombokVersion" + compileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" + implementation "com.google.guava:guava:$guavaVersion" implementation "com.google.protobuf:protobuf-java:$protobufVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" implementation("io.grpc:grpc-protobuf:$grpcVersion") { - exclude(module: 'guava') exclude(module: 'animal-sniffer-annotations') + exclude(module: 'guava') } implementation("io.grpc:grpc-stub:$grpcVersion") { - exclude(module: 'guava') exclude(module: 'animal-sniffer-annotations') + exclude(module: 'guava') } - implementation "com.google.guava:guava:$guavaVersion" - implementation "org.slf4j:slf4j-api:$slf4jVersion" - implementation "ch.qos.logback:logback-core:$logbackVersion" - implementation "ch.qos.logback:logback-classic:$logbackVersion" - compileOnly "org.projectlombok:lombok:$lombokVersion" - compileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" - annotationProcessor "org.projectlombok:lombok:$lombokVersion" } sourceSets.main.java.srcDirs += [ @@ -226,40 +227,31 @@ configure(project(':proto')) { configure(project(':assets')) { dependencies { - compile("com.github.bisq-network:bitcoinj:$bitcoinjVersion") { - exclude(module: 'jsr305') - exclude(module: 'slf4j-api') - exclude(module: 'guava') - exclude(module: 'protobuf-java') + implementation("com.github.bisq-network:bitcoinj:$bitcoinjVersion") { exclude(module: 'bcprov-jdk15on') + exclude(module: 'guava') + exclude(module: 'jsr305') exclude(module: 'okhttp') exclude(module: 'okio') + exclude(module: 'protobuf-java') + exclude(module: 'slf4j-api') } - compile "com.google.guava:guava:$guavaVersion" - compile "org.slf4j:slf4j-api:$slf4jVersion" - compile "org.apache.commons:commons-lang3:$langVersion" + implementation "com.google.guava:guava:$guavaVersion" + implementation "org.apache.commons:commons-lang3:$langVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" } } configure(project(':common')) { dependencies { - compile project(':proto') - implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion" - compile "org.openjfx:javafx-base:$javafxVersion:$os" - compile "org.openjfx:javafx-graphics:$javafxVersion:$os" - compile "com.google.protobuf:protobuf-java:$protobufVersion" - compile "com.google.code.gson:gson:$gsonVersion" - compile "net.sf.jopt-simple:jopt-simple:$joptVersion" - compile "org.slf4j:slf4j-api:$slf4jVersion" - compile "ch.qos.logback:logback-core:$logbackVersion" - compile "ch.qos.logback:logback-classic:$logbackVersion" - compile "com.google.code.findbugs:jsr305:$findbugsVersion" - compile "com.google.guava:guava:$guavaVersion" - compile("com.google.inject:guice:$guiceVersion") { - exclude(module: 'guava') - } - compile("com.github.bisq-network:bitcoinj:$bitcoinjVersion") { + implementation project(':proto') + annotationProcessor "org.projectlombok:lombok:$lombokVersion" + compileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" + implementation("com.github.bisq-network:bitcoinj:$bitcoinjVersion") { exclude(module: 'jsr305') exclude(module: 'slf4j-api') exclude(module: 'guava') @@ -268,86 +260,146 @@ configure(project(':common')) { exclude(module: 'okhttp') exclude(module: 'okio') } + implementation "com.google.code.findbugs:jsr305:$findbugsVersion" + implementation "com.google.code.gson:gson:$gsonVersion" + implementation "com.google.guava:guava:$guavaVersion" + implementation("com.google.inject:guice:$guiceVersion") { + exclude(module: 'guava') + } + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion" + implementation "com.google.protobuf:protobuf-java:$protobufVersion" + implementation "commons-io:commons-io:$ioVersion" + implementation "net.sf.jopt-simple:jopt-simple:$joptVersion" + implementation "org.apache.commons:commons-lang3:$langVersion" + implementation "org.bouncycastle:bcpg-jdk15on:$bcVersion" + implementation "org.jetbrains:annotations:$jetbrainsAnnotationsVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" + testImplementation "org.hamcrest:hamcrest-all:$hamcrestVersion" runtimeOnly("io.grpc:grpc-netty-shaded:$grpcVersion") { exclude(module: 'guava') exclude(module: 'animal-sniffer-annotations') } - compile "org.jetbrains:annotations:$jetbrainsAnnotationsVersion" - compile "org.bouncycastle:bcpg-jdk15on:$bcVersion" - compile "commons-io:commons-io:$ioVersion" - compile "org.apache.commons:commons-lang3:$langVersion" - compileOnly "org.projectlombok:lombok:$lombokVersion" - annotationProcessor "org.projectlombok:lombok:$lombokVersion" - testCompile "org.hamcrest:hamcrest-all:$hamcrestVersion" // override transitive dependency version from 1.5 to the same version just identified by commit number. // Remove this if transitive dependency is changed to something else than 1.5 - compile(group: 'com.github.JesusMcCloud', name: 'jtorctl') { version { strictly "[9b5ba2036b]" } } - + implementation(group: 'com.github.JesusMcCloud', name: 'jtorctl') { version { strictly "[9b5ba2036b]" } } + implementation "org.openjfx:javafx-base:$javafxVersion:$os" + implementation "org.openjfx:javafx-graphics:$javafxVersion:$os" } } - configure(project(':p2p')) { dependencies { - compile project(':common') - compile("com.github.bisq-network.netlayer:tor.native:$netlayerVersion") { + implementation project(':proto') + implementation project(':common') + annotationProcessor "org.projectlombok:lombok:$lombokVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "com.google.guava:guava:$guavaVersion" + implementation "com.google.protobuf:protobuf-java:$protobufVersion" + implementation "org.fxmisc.easybind:easybind:$easybindVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" + implementation("com.github.bisq-network.netlayer:tor.external:$netlayerVersion") { exclude(module: 'slf4j-api') } - compile("com.github.bisq-network.netlayer:tor.external:$netlayerVersion") { + implementation("com.github.bisq-network.netlayer:tor.native:$netlayerVersion") { exclude(module: 'slf4j-api') } + implementation("com.github.bisq-network:bitcoinj:$bitcoinjVersion") { + exclude(module: 'bcprov-jdk15on') + exclude(module: 'guava') + exclude(module: 'jsr305') + exclude(module: 'okhttp') + exclude(module: 'okio') + exclude(module: 'protobuf-java') + exclude(module: 'slf4j-api') + } + implementation("com.google.inject:guice:$guiceVersion") { + exclude(module: 'guava') + } implementation("org.apache.httpcomponents:httpclient:$httpclientVersion") { exclude(module: 'commons-codec') } - compile "org.fxmisc.easybind:easybind:$easybindVersion" - compileOnly "org.projectlombok:lombok:$lombokVersion" - annotationProcessor "org.projectlombok:lombok:$lombokVersion" - testCompileOnly "org.projectlombok:lombok:$lombokVersion" testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion" - testCompile("org.mockito:mockito-core:$mockitoVersion") + testCompileOnly "org.projectlombok:lombok:$lombokVersion" + testImplementation "ch.qos.logback:logback-classic:$logbackVersion" + testImplementation "ch.qos.logback:logback-core:$logbackVersion" + testImplementation "org.apache.commons:commons-lang3:$langVersion" + testImplementation("org.mockito:mockito-core:$mockitoVersion") + + implementation "org.openjfx:javafx-base:$javafxVersion:$os" + implementation "org.openjfx:javafx-graphics:$javafxVersion:$os" } } configure(project(':core')) { dependencies { - compile project(':proto') - compile project(':assets') - compile project(':p2p') - implementation "commons-codec:commons-codec:$codecVersion" + implementation project(':proto') + implementation project(':assets') + implementation project(':common') + implementation project(':p2p') + annotationProcessor "org.projectlombok:lombok:$lombokVersion" + compileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" + implementation "com.fasterxml.jackson.core:jackson-core:$jacksonVersion" + implementation "com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion" + implementation "com.google.code.findbugs:jsr305:$findbugsVersion" implementation "com.google.code.gson:gson:$gsonVersion" + implementation "com.google.guava:guava:$guavaVersion" + implementation "com.google.protobuf:protobuf-java:$protobufVersion" + implementation "commons-codec:commons-codec:$codecVersion" + implementation "commons-io:commons-io:$ioVersion" + implementation "net.sf.jopt-simple:jopt-simple:$joptVersion" + implementation "org.apache.commons:commons-lang3:$langVersion" implementation "org.apache.httpcomponents:httpcore:$httpcoreVersion" - implementation("org.apache.httpcomponents:httpclient:$httpclientVersion") { - exclude(module: 'commons-codec') + implementation "org.fxmisc.easybind:easybind:$easybindVersion" + implementation "org.jetbrains:annotations:$jetbrainsAnnotationsVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" + implementation("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion") { + exclude(module: 'jackson-annotations') } - compile "com.google.guava:guava:$guavaVersion" - compile("com.github.bisq-network:jsonrpc4j:$jsonrpc4jVersion") { + implementation("com.github.bisq-network.netlayer:tor.native:$netlayerVersion") { + exclude(module: 'slf4j-api') + } + implementation("com.github.bisq-network.netlayer:tor.external:$netlayerVersion") { + exclude(module: 'slf4j-api') + } + implementation("com.github.bisq-network:bitcoinj:$bitcoinjVersion") { + exclude(module: 'bcprov-jdk15on') + exclude(module: 'guava') + exclude(module: 'jsr305') + exclude(module: 'okhttp') + exclude(module: 'okio') + exclude(module: 'protobuf-java') + exclude(module: 'slf4j-api') + } + implementation("com.github.bisq-network:jsonrpc4j:$jsonrpc4jVersion") { exclude(module: 'base64') exclude(module: 'httpcore-nio') } - compile "com.fasterxml.jackson.core:jackson-core:$jacksonVersion" - compile "com.fasterxml.jackson.core:jackson-annotations:$jacksonVersion" - compile("com.fasterxml.jackson.core:jackson-databind:$jacksonVersion") { - exclude(module: 'jackson-annotations') + implementation("com.google.inject:guice:$guiceVersion") { + exclude(module: 'guava') } - compile("io.github.monero-ecosystem:monero-java:$moneroJavaVersion") { + implementation("org.apache.httpcomponents:httpclient:$httpclientVersion") { + exclude(module: 'commons-codec') + } + testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion" + testCompileOnly "org.projectlombok:lombok:$lombokVersion" + testImplementation "com.natpryce:make-it-easy:$easyVersion" + testImplementation "org.hamcrest:hamcrest-all:$hamcrestVersion" + testImplementation "org.mockito:mockito-core:$mockitoVersion" + + implementation "org.openjfx:javafx-base:$javafxVersion:$os" + implementation "org.openjfx:javafx-graphics:$javafxVersion:$os" + implementation("io.github.monero-ecosystem:monero-java:$moneroJavaVersion") { exclude(module: 'jackson-core') exclude(module: 'jackson-annotations') exclude(module: 'jackson-databind') exclude(module: 'bcprov-jdk15on') exclude(group: 'org.slf4j', module: 'slf4j-simple') } - implementation("org.apache.httpcomponents.client5:httpclient5:$httpclient5Version") - implementation "com.google.protobuf:protobuf-java:$protobufVersion" - compileOnly "org.projectlombok:lombok:$lombokVersion" - annotationProcessor "org.projectlombok:lombok:$lombokVersion" - - testCompile "org.hamcrest:hamcrest-all:$hamcrestVersion" - testCompile "org.mockito:mockito-core:$mockitoVersion" - testCompile "com.natpryce:make-it-easy:$easyVersion" - testCompileOnly "org.projectlombok:lombok:$lombokVersion" - testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion" } test { @@ -366,36 +418,34 @@ configure(project(':cli')) { mainClassName = 'bisq.cli.CliMain' dependencies { - compile project(':proto') - compile project(':core') - implementation "net.sf.jopt-simple:jopt-simple:$joptVersion" + implementation project(':proto') + annotationProcessor "org.projectlombok:lombok:$lombokVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" implementation "com.google.guava:guava:$guavaVersion" implementation "com.google.protobuf:protobuf-java:$protobufVersion" + implementation "net.sf.jopt-simple:jopt-simple:$joptVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" implementation("io.grpc:grpc-core:$grpcVersion") { - exclude(module: 'guava') exclude(module: 'animal-sniffer-annotations') + exclude(module: 'guava') } implementation("io.grpc:grpc-stub:$grpcVersion") { - exclude(module: 'guava') exclude(module: 'animal-sniffer-annotations') + exclude(module: 'guava') } runtimeOnly("io.grpc:grpc-netty-shaded:$grpcVersion") { - exclude(module: 'guava') exclude(module: 'animal-sniffer-annotations') + exclude(module: 'guava') } - implementation "org.slf4j:slf4j-api:$slf4jVersion" - implementation "ch.qos.logback:logback-core:$logbackVersion" - implementation "ch.qos.logback:logback-classic:$logbackVersion" - compileOnly "org.projectlombok:lombok:$lombokVersion" - annotationProcessor "org.projectlombok:lombok:$lombokVersion" - - testImplementation "org.junit.jupiter:junit-jupiter-api:$jupiterVersion" - testImplementation "org.junit.jupiter:junit-jupiter-params:$jupiterVersion" - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$jupiterVersion") testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion" testCompileOnly "org.projectlombok:lombok:$lombokVersion" testImplementation "org.bitbucket.cowwoc:diff-match-patch:$cowwocVersion" - testRuntime "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" + testImplementation "org.junit.jupiter:junit-jupiter-api:$jupiterVersion" + testImplementation "org.junit.jupiter:junit-jupiter-params:$jupiterVersion" + testRuntimeOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$jupiterVersion") } test { @@ -423,25 +473,59 @@ configure(project(':desktop')) { sourceSets.main.resources.srcDirs += ['src/main/java'] // to copy fxml and css files dependencies { - compile project(':core') - compile "net.glxn:qrgen:$qrgenVersion" - compile "de.jensd:fontawesomefx:$fontawesomefxVersion" - compile "de.jensd:fontawesomefx-commons:$fontawesomefxCommonsVersion" - compile "de.jensd:fontawesomefx-materialdesignfont:$fontawesomefxMaterialdesignfontVersion" - compile "com.google.guava:guava:$guavaVersion" - compile "com.googlecode.jcsv:jcsv:$jcsvVersion" - compile "org.openjfx:javafx-controls:$javafxVersion:$os" - compile "org.openjfx:javafx-fxml:$javafxVersion:$os" - compile "org.openjfx:javafx-swing:$javafxVersion:$os" - compile "com.jfoenix:jfoenix:$jfoenixVersion" - - compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation project(':assets') + implementation project(':common') + implementation project(':proto') + implementation project(':p2p') + implementation project(':core') annotationProcessor "org.projectlombok:lombok:$lombokVersion" - - testCompile "org.mockito:mockito-core:$mockitoVersion" - testCompile "com.natpryce:make-it-easy:$easyVersion" - testCompileOnly "org.projectlombok:lombok:$lombokVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" + implementation "com.google.code.gson:gson:$gsonVersion" + implementation "com.google.guava:guava:$guavaVersion" + implementation "com.google.protobuf:protobuf-java:$protobufVersion" + implementation "com.googlecode.jcsv:jcsv:$jcsvVersion" + implementation "com.jfoenix:jfoenix:$jfoenixVersion" + implementation "commons-io:commons-io:$ioVersion" + implementation "de.jensd:fontawesomefx-commons:$fontawesomefxCommonsVersion" + implementation "de.jensd:fontawesomefx-materialdesignfont:$fontawesomefxMaterialdesignfontVersion" + implementation "de.jensd:fontawesomefx:$fontawesomefxVersion" + implementation "net.glxn:qrgen:$qrgenVersion" + implementation "org.apache.commons:commons-lang3:$langVersion" + implementation "org.bouncycastle:bcpg-jdk15on:$bcVersion" + implementation "org.fxmisc.easybind:easybind:$easybindVersion" + implementation "org.jetbrains:annotations:$jetbrainsAnnotationsVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" + implementation("com.github.bisq-network:bitcoinj:$bitcoinjVersion") { + exclude(module: 'bcprov-jdk15on') + exclude(module: 'guava') + exclude(module: 'jsr305') + exclude(module: 'okhttp') + exclude(module: 'okio') + exclude(module: 'protobuf-java') + exclude(module: 'slf4j-api') + } + implementation("com.google.inject:guice:$guiceVersion") { + exclude(module: 'guava') + } testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion" + testCompileOnly "org.projectlombok:lombok:$lombokVersion" + testImplementation "com.natpryce:make-it-easy:$easyVersion" + testImplementation "org.mockito:mockito-core:$mockitoVersion" + + implementation("io.github.monero-ecosystem:monero-java:$moneroJavaVersion") { + exclude(module: 'jackson-core') + exclude(module: 'jackson-annotations') + exclude(module: 'jackson-databind') + exclude(module: 'bcprov-jdk15on') + exclude(group: 'org.slf4j', module: 'slf4j-simple') + } + implementation "org.openjfx:javafx-controls:$javafxVersion:$os" + implementation "org.openjfx:javafx-fxml:$javafxVersion:$os" + implementation "org.openjfx:javafx-swing:$javafxVersion:$os" + implementation "org.openjfx:javafx-base:$javafxVersion:$os" + implementation "org.openjfx:javafx-graphics:$javafxVersion:$os" } test { @@ -461,20 +545,33 @@ configure(project(':monitor')) { } dependencies { - compile project(':core') - compile "org.slf4j:slf4j-api:$slf4jVersion" - compile "ch.qos.logback:logback-core:$logbackVersion" - compile "ch.qos.logback:logback-classic:$logbackVersion" - compile "com.google.guava:guava:$guavaVersion" - - compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation project(':assets') + implementation project(':common') + implementation project(':core') + implementation project(':p2p') annotationProcessor "org.projectlombok:lombok:$lombokVersion" - - testCompile "org.junit.jupiter:junit-jupiter-api:$jupiterVersion" - testCompile "org.junit.jupiter:junit-jupiter-params:$jupiterVersion" - testCompileOnly "org.projectlombok:lombok:$lombokVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" + implementation "com.google.guava:guava:$guavaVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" + implementation("com.github.bisq-network.netlayer:tor.external:$netlayerVersion") { + exclude(module: 'slf4j-api') + } + implementation("com.github.bisq-network.netlayer:tor.native:$netlayerVersion") { + exclude(module: 'slf4j-api') + } + implementation("com.google.inject:guice:$guiceVersion") { + exclude(module: 'guava') + } testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion" - testRuntime("org.junit.jupiter:junit-jupiter-engine:$jupiterVersion") + testCompileOnly "org.projectlombok:lombok:$lombokVersion" + testImplementation "org.junit.jupiter:junit-jupiter-api:$jupiterVersion" + testImplementation "org.junit.jupiter:junit-jupiter-params:$jupiterVersion" + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$jupiterVersion") + + implementation "org.openjfx:javafx-base:$javafxVersion:$os" + implementation "org.openjfx:javafx-graphics:$javafxVersion:$os" } } @@ -558,17 +655,19 @@ configure(project(':relay')) { mainClassName = 'bisq.relay.RelayMain' dependencies { - compile project(':common') - implementation "io.grpc:grpc-auth:$grpcVersion" - compile "com.sparkjava:spark-core:$sparkVersion" - compile "com.turo:pushy:$pushyVersion" + implementation project(':common') + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" implementation("com.google.firebase:firebase-admin:$firebaseVersion") { exclude(module: 'commons-logging') + exclude(module: 'grpc-auth') exclude(module: 'httpclient') exclude(module: 'httpcore') - exclude(module: 'grpc-auth') } - compile "commons-codec:commons-codec:$codecVersion" + implementation "com.sparkjava:spark-core:$sparkVersion" + implementation "com.turo:pushy:$pushyVersion" + implementation "commons-codec:commons-codec:$codecVersion" + implementation "io.grpc:grpc-auth:$grpcVersion" } } @@ -579,11 +678,17 @@ configure(project(':seednode')) { mainClassName = 'bisq.seednode.SeedNodeMain' dependencies { - compile project(':core') + implementation project(':common') + implementation project(':p2p') + implementation project(':core') + annotationProcessor "org.projectlombok:lombok:$lombokVersion" compileOnly "org.projectlombok:lombok:$lombokVersion" implementation "com.google.guava:guava:$guavaVersion" - annotationProcessor "org.projectlombok:lombok:$lombokVersion" - testCompile "org.mockito:mockito-core:$mockitoVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" + implementation("com.google.inject:guice:$guiceVersion") { + exclude(module: 'guava') + } + testImplementation "org.mockito:mockito-core:$mockitoVersion" } } @@ -592,9 +697,15 @@ configure(project(':statsnode')) { mainClassName = 'bisq.statistics.StatisticsMain' dependencies { - compile project(':core') - compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation project(':common') + implementation project(':p2p') + implementation project(':core') annotationProcessor "org.projectlombok:lombok:$lombokVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" + implementation("com.google.inject:guice:$guiceVersion") { + exclude(module: 'guava') + } } } @@ -602,33 +713,60 @@ configure(project(':daemon')) { mainClassName = 'bisq.daemon.app.HavenoDaemonMain' dependencies { - compile project(':core') + implementation project(':proto') + implementation project(':common') + implementation project(':p2p') + implementation project(':core') + annotationProcessor "org.projectlombok:lombok:$lombokVersion" + compileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" + implementation "com.google.code.gson:gson:$gsonVersion" implementation "com.google.guava:guava:$guavaVersion" implementation "com.google.protobuf:protobuf-java:$protobufVersion" - implementation("io.grpc:grpc-protobuf:$grpcVersion") { + implementation "org.apache.commons:commons-lang3:$langVersion" + implementation "org.jetbrains:annotations:$jetbrainsAnnotationsVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" + implementation("com.github.bisq-network:bitcoinj:$bitcoinjVersion") { + exclude(module: 'bcprov-jdk15on') exclude(module: 'guava') + exclude(module: 'jsr305') + exclude(module: 'okhttp') + exclude(module: 'okio') + exclude(module: 'protobuf-java') + exclude(module: 'slf4j-api') + } + implementation("com.google.inject:guice:$guiceVersion") { + exclude(module: 'guava') + } + implementation("io.grpc:grpc-protobuf:$grpcVersion") { exclude(module: 'animal-sniffer-annotations') + exclude(module: 'guava') } implementation("io.grpc:grpc-stub:$grpcVersion") { - exclude(module: 'guava') exclude(module: 'animal-sniffer-annotations') + exclude(module: 'guava') } runtimeOnly("io.grpc:grpc-netty-shaded:$grpcVersion") { - exclude(module: 'guava') exclude(module: 'animal-sniffer-annotations') + exclude(module: 'guava') } - implementation "org.slf4j:slf4j-api:$slf4jVersion" - implementation "ch.qos.logback:logback-core:$logbackVersion" - implementation "ch.qos.logback:logback-classic:$logbackVersion" - compileOnly "org.projectlombok:lombok:$lombokVersion" - compileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" - annotationProcessor "org.projectlombok:lombok:$lombokVersion" - - testCompile "org.junit.jupiter:junit-jupiter-api:$jupiterVersion" - testCompile "org.junit.jupiter:junit-jupiter-params:$jupiterVersion" - testCompileOnly "org.projectlombok:lombok:$lombokVersion" testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion" - testRuntime("org.junit.jupiter:junit-jupiter-engine:$jupiterVersion") + testCompileOnly "org.projectlombok:lombok:$lombokVersion" + testImplementation "org.junit.jupiter:junit-jupiter-api:$jupiterVersion" + testImplementation "org.junit.jupiter:junit-jupiter-params:$jupiterVersion" + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$jupiterVersion") + + implementation("io.github.monero-ecosystem:monero-java:$moneroJavaVersion") { + exclude(module: 'jackson-core') + exclude(module: 'jackson-annotations') + exclude(module: 'jackson-databind') + exclude(module: 'bcprov-jdk15on') + exclude(group: 'org.slf4j', module: 'slf4j-simple') + } + implementation "org.openjfx:javafx-base:$javafxVersion:$os" + implementation "org.openjfx:javafx-graphics:$javafxVersion:$os" } } @@ -638,12 +776,19 @@ configure(project(':inventory')) { mainClassName = 'bisq.inventory.InventoryMonitorMain' dependencies { - compile project(':core') - compile "com.google.guava:guava:$guavaVersion" - compile "com.sparkjava:spark-core:$sparkVersion" - - compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation project(':common') + implementation project(':p2p') + implementation project(':core') annotationProcessor "org.projectlombok:lombok:$lombokVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" + implementation "com.google.guava:guava:$guavaVersion" + implementation "com.sparkjava:spark-core:$sparkVersion" + implementation "org.jetbrains:annotations:$jetbrainsAnnotationsVersion" + implementation("com.google.inject:guice:$guiceVersion") { + exclude(module: 'guava') + } } } @@ -687,37 +832,47 @@ configure(project(':apitest')) { } dependencies { - compile project(':proto') - compile project(':common') - compile project(':seednode') - compile project(':desktop') - compile project(':daemon') - compile project(':cli') - implementation "net.sf.jopt-simple:jopt-simple:$joptVersion" + implementation project(':proto') + implementation project(':common') + implementation project(':core') + implementation project(':seednode') + implementation project(':desktop') + implementation project(':daemon') + implementation project(':cli') + annotationProcessor "org.projectlombok:lombok:$lombokVersion" + compileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" + compileOnly "org.projectlombok:lombok:$lombokVersion" + implementation "ch.qos.logback:logback-classic:$logbackVersion" + implementation "ch.qos.logback:logback-core:$logbackVersion" + implementation "com.google.code.gson:gson:$gsonVersion" implementation "com.google.guava:guava:$guavaVersion" implementation "com.google.protobuf:protobuf-java:$protobufVersion" - implementation("io.grpc:grpc-protobuf:$grpcVersion") { + implementation "net.sf.jopt-simple:jopt-simple:$joptVersion" + implementation "org.apache.commons:commons-lang3:$langVersion" + implementation "org.slf4j:slf4j-api:$slf4jVersion" + implementation("com.github.bisq-network:bitcoinj:$bitcoinjVersion") { + exclude(module: 'bcprov-jdk15on') exclude(module: 'guava') + exclude(module: 'jsr305') + exclude(module: 'okhttp') + exclude(module: 'okio') + exclude(module: 'protobuf-java') + exclude(module: 'slf4j-api') + } + implementation("io.grpc:grpc-protobuf:$grpcVersion") { exclude(module: 'animal-sniffer-annotations') + exclude(module: 'guava') } implementation("io.grpc:grpc-stub:$grpcVersion") { - exclude(module: 'guava') exclude(module: 'animal-sniffer-annotations') + exclude(module: 'guava') } - implementation "org.slf4j:slf4j-api:$slf4jVersion" - implementation "ch.qos.logback:logback-core:$logbackVersion" - implementation "ch.qos.logback:logback-classic:$logbackVersion" - - compileOnly "org.projectlombok:lombok:$lombokVersion" - compileOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" - annotationProcessor "org.projectlombok:lombok:$lombokVersion" - - testImplementation "org.junit.jupiter:junit-jupiter-api:$jupiterVersion" - testImplementation "org.junit.jupiter:junit-jupiter-params:$jupiterVersion" - testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$jupiterVersion") testAnnotationProcessor "org.projectlombok:lombok:$lombokVersion" testCompileOnly "org.projectlombok:lombok:$lombokVersion" - testRuntime "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" + testImplementation "org.junit.jupiter:junit-jupiter-api:$jupiterVersion" + testImplementation "org.junit.jupiter:junit-jupiter-params:$jupiterVersion" + testRuntimeOnly "javax.annotation:javax.annotation-api:$javaxAnnotationVersion" + testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine:$jupiterVersion") } } diff --git a/core/src/test/java/bisq/core/payment/ReceiptValidatorTest.java b/core/src/test/java/bisq/core/payment/ReceiptValidatorTest.java index 1822455ae5..0a58bc1994 100644 --- a/core/src/test/java/bisq/core/payment/ReceiptValidatorTest.java +++ b/core/src/test/java/bisq/core/payment/ReceiptValidatorTest.java @@ -46,7 +46,7 @@ public class ReceiptValidatorTest { @After public void tearDown() { - verifyZeroInteractions(offer); + verifyNoMoreInteractions(offer); } @Test diff --git a/gradle/README.md b/gradle/README.md index 4d88406b08..d0f6dd05a5 100644 --- a/gradle/README.md +++ b/gradle/README.md @@ -8,18 +8,18 @@ Visit the [Gradle website](https://gradle.org/releases/) and decide the: Adjust the following command with tha arguments above and execute it twice: - ./gradlew wrapper --gradle-version 6.6.1 \ + ./gradlew wrapper --gradle-version 7.3.3 \ --distribution-type all \ - --gradle-distribution-sha256-sum 11657af6356b7587bfb37287b5992e94a9686d5c8a0a1b60b87b9928a2decde5 + --gradle-distribution-sha256-sum c9490e938b221daf0094982288e4038deed954a3f12fb54cbf270ddf4e37d879 The first execution should automatically update: - - `bisq/gradle/wrapper/gradle-wrapper.properties` + - `haveno/gradle/wrapper/gradle-wrapper.properties` The second execution should then update: - - `bisq/gradle/wrapper/gradle-wrapper.jar` - - `bisq/gradlew` - - `bisq/gradlew.bat` + - `haveno/gradle/wrapper/gradle-wrapper.jar` + - `haveno/gradlew` + - `haveno/gradlew.bat` The four updated files are ready to be committed. diff --git a/gradle/verification-metadata.xml b/gradle/verification-metadata.xml index d123c73a39..63290d0aa9 100644 --- a/gradle/verification-metadata.xml +++ b/gradle/verification-metadata.xml @@ -1,5 +1,5 @@ - + false false @@ -25,6 +25,14 @@ + + + + + + + + @@ -33,11 +41,24 @@ + + + + + + + + + + + + + @@ -54,6 +75,11 @@ + + + + + @@ -77,11 +103,31 @@ + + + + + + + + + + + + + + + + + + + + @@ -92,6 +138,19 @@ + + + + + + + + + + + + + @@ -110,6 +169,19 @@ + + + + + + + + + + + + + @@ -123,6 +195,19 @@ + + + + + + + + + + + + + @@ -131,11 +216,40 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -144,6 +258,24 @@ + + + + + + + + + + + + + + + + + + @@ -496,6 +628,14 @@ + + + + + + + + @@ -511,6 +651,11 @@ + + + + + @@ -554,6 +699,11 @@ + + + + + @@ -570,6 +720,11 @@ + + + + + @@ -580,6 +735,11 @@ + + + + + @@ -588,11 +748,29 @@ + + + + + + + + + + + + + + + + + + @@ -603,6 +781,11 @@ + + + + + @@ -616,6 +799,16 @@ + + + + + + + + + + @@ -624,6 +817,19 @@ + + + + + + + + + + + + + @@ -639,6 +845,11 @@ + + + + + @@ -685,6 +896,11 @@ + + + + + @@ -703,11 +919,21 @@ + + + + + + + + + + @@ -716,6 +942,19 @@ + + + + + + + + + + + + + @@ -726,6 +965,11 @@ + + + + + @@ -737,6 +981,23 @@ + + + + + + + + + + + + + + + + + @@ -757,6 +1018,11 @@ + + + + + @@ -767,11 +1033,26 @@ + + + + + + + + + + + + + + + @@ -785,6 +1066,11 @@ + + + + + @@ -837,6 +1123,16 @@ + + + + + + + + + + @@ -925,11 +1221,24 @@ + + + + + + + + + + + + + @@ -938,6 +1247,14 @@ + + + + + + + + @@ -951,6 +1268,14 @@ + + + + + + + + @@ -964,6 +1289,14 @@ + + + + + + + + @@ -977,6 +1310,14 @@ + + + + + + + + @@ -990,6 +1331,14 @@ + + + + + + + + @@ -1003,6 +1352,14 @@ + + + + + + + + @@ -1014,6 +1371,30 @@ + + + + + + + + + + + + + + + + + + + + + + + + @@ -1113,6 +1494,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1144,6 +1563,27 @@ + + + + + + + + + + + + + + + + + + + + + @@ -1152,11 +1592,32 @@ + + + + + + + + + + + + + + + + + + + + + @@ -1178,6 +1639,14 @@ + + + + + + + + @@ -1230,6 +1699,11 @@ + + + + + @@ -1238,6 +1712,19 @@ + + + + + + + + + + + + + @@ -1246,11 +1733,29 @@ + + + + + + + + + + + + + + + + + + @@ -1266,6 +1771,16 @@ + + + + + + + + + + @@ -1295,6 +1810,11 @@ + + + + + @@ -1415,6 +1935,11 @@ + + + + + @@ -1453,6 +1978,11 @@ + + + + + @@ -1482,11 +2012,24 @@ + + + + + + + + + + + + + @@ -1495,6 +2038,14 @@ + + + + + + + + @@ -1503,21 +2054,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1533,6 +2110,19 @@ + + + + + + + + + + + + + @@ -1549,6 +2139,14 @@ + + + + + + + + @@ -1557,6 +2155,14 @@ + + + + + + + + @@ -1565,6 +2171,14 @@ + + + + + + + + @@ -1573,6 +2187,11 @@ + + + + + @@ -1602,6 +2221,11 @@ + + + + + @@ -1610,6 +2234,24 @@ + + + + + + + + + + + + + + + + + + @@ -1625,6 +2267,21 @@ + + + + + + + + + + + + + + + @@ -1698,6 +2355,19 @@ + + + + + + + + + + + + + @@ -1711,6 +2381,14 @@ + + + + + + + + @@ -1729,6 +2407,16 @@ + + + + + + + + + + @@ -1737,6 +2425,14 @@ + + + + + + + + @@ -1745,11 +2441,24 @@ + + + + + + + + + + + + + @@ -1758,6 +2467,14 @@ + + + + + + + + @@ -1766,11 +2483,24 @@ + + + + + + + + + + + + + @@ -1812,6 +2542,11 @@ + + + + + @@ -1820,6 +2555,14 @@ + + + + + + + + @@ -1828,6 +2571,14 @@ + + + + + + + + @@ -1836,6 +2587,14 @@ + + + + + + + + @@ -1844,6 +2603,19 @@ + + + + + + + + + + + + + @@ -1859,6 +2631,11 @@ + + + + + @@ -1891,6 +2668,14 @@ + + + + + + + + @@ -1899,6 +2684,14 @@ + + + + + + + + @@ -2261,6 +3054,14 @@ + + + + + + + + @@ -2269,11 +3070,24 @@ + + + + + + + + + + + + + @@ -2375,6 +3189,14 @@ + + + + + + + + @@ -2388,6 +3210,14 @@ + + + + + + + + @@ -2401,6 +3231,14 @@ + + + + + + + + @@ -2414,6 +3252,14 @@ + + + + + + + + @@ -2451,6 +3297,14 @@ + + + + + + + + @@ -2459,6 +3313,11 @@ + + + + + @@ -2472,11 +3331,24 @@ + + + + + + + + + + + + + @@ -2495,6 +3367,14 @@ + + + + + + + + @@ -2503,6 +3383,14 @@ + + + + + + + + @@ -2511,6 +3399,14 @@ + + + + + + + + @@ -2519,6 +3415,14 @@ + + + + + + + + @@ -2527,11 +3431,32 @@ + + + + + + + + + + + + + + + + + + + + + @@ -2540,6 +3465,14 @@ + + + + + + + + @@ -2548,6 +3481,14 @@ + + + + + + + + @@ -2556,6 +3497,14 @@ + + + + + + + + @@ -2572,21 +3521,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -2600,6 +3577,14 @@ + + + + + + + + @@ -2608,6 +3593,14 @@ + + + + + + + + @@ -2616,6 +3609,14 @@ + + + + + + + + @@ -2629,6 +3630,14 @@ + + + + + + + + @@ -2637,11 +3646,24 @@ + + + + + + + + + + + + + @@ -2657,16 +3679,36 @@ + + + + + + + + + + + + + + + + + + + + @@ -2688,6 +3730,14 @@ + + + + + + + + diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index e708b1c023..7454180f2a 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 0e42234001..ee6ba9a3ac 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionSha256Sum=11657af6356b7587bfb37287b5992e94a9686d5c8a0a1b60b87b9928a2decde5 -distributionUrl=https\://services.gradle.org/distributions/gradle-6.6.1-all.zip +distributionSha256Sum=c9490e938b221daf0094982288e4038deed954a3f12fb54cbf270ddf4e37d879 +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-all.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index 4f906e0c81..1b6c787337 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ -#!/usr/bin/env sh +#!/bin/sh # -# Copyright 2015 the original author or authors. +# Copyright © 2015-2021 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -17,67 +17,101 @@ # ############################################################################## -## -## Gradle start up script for UN*X -## +# +# Gradle start up script for POSIX generated by Gradle. +# +# Important for running: +# +# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is +# noncompliant, but you have some other compliant shell such as ksh or +# bash, then to run this script, type that shell name before the whole +# command line, like: +# +# ksh Gradle +# +# Busybox and similar reduced shells will NOT work, because this script +# requires all of these POSIX shell features: +# * functions; +# * expansions «$var», «${var}», «${var:-default}», «${var+SET}», +# «${var#prefix}», «${var%suffix}», and «$( cmd )»; +# * compound commands having a testable exit status, especially «case»; +# * various built-in commands including «command», «set», and «ulimit». +# +# Important for patching: +# +# (2) This script targets any POSIX shell, so it avoids extensions provided +# by Bash, Ksh, etc; in particular arrays are avoided. +# +# The "traditional" practice of packing multiple parameters into a +# space-separated string is a well documented source of bugs and security +# problems, so this is (mostly) avoided, by progressively accumulating +# options in "$@", and eventually passing that to Java. +# +# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS, +# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly; +# see the in-line comments for details. +# +# There are tweaks for specific operating systems such as AIX, CygWin, +# Darwin, MinGW, and NonStop. +# +# (3) This script is generated from the Groovy template +# https://github.com/gradle/gradle/blob/master/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt +# within the Gradle project. +# +# You can find Gradle at https://github.com/gradle/gradle/. +# ############################################################################## # Attempt to set APP_HOME + # Resolve links: $0 may be a link -PRG="$0" -# Need this for relative symlinks. -while [ -h "$PRG" ] ; do - ls=`ls -ld "$PRG"` - link=`expr "$ls" : '.*-> \(.*\)$'` - if expr "$link" : '/.*' > /dev/null; then - PRG="$link" - else - PRG=`dirname "$PRG"`"/$link" - fi +app_path=$0 + +# Need this for daisy-chained symlinks. +while + APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path + [ -h "$app_path" ] +do + ls=$( ls -ld "$app_path" ) + link=${ls#*' -> '} + case $link in #( + /*) app_path=$link ;; #( + *) app_path=$APP_HOME$link ;; + esac done -SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >/dev/null -APP_HOME="`pwd -P`" -cd "$SAVED" >/dev/null + +APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit APP_NAME="Gradle" -APP_BASE_NAME=`basename "$0"` +APP_BASE_NAME=${0##*/} # Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Use the maximum available, or set MAX_FD != -1 to use that value. -MAX_FD="maximum" +MAX_FD=maximum warn () { echo "$*" -} +} >&2 die () { echo echo "$*" echo exit 1 -} +} >&2 # OS specific support (must be 'true' or 'false'). cygwin=false msys=false darwin=false nonstop=false -case "`uname`" in - CYGWIN* ) - cygwin=true - ;; - Darwin* ) - darwin=true - ;; - MINGW* ) - msys=true - ;; - NONSTOP* ) - nonstop=true - ;; +case "$( uname )" in #( + CYGWIN* ) cygwin=true ;; #( + Darwin* ) darwin=true ;; #( + MSYS* | MINGW* ) msys=true ;; #( + NONSTOP* ) nonstop=true ;; esac CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -87,9 +121,9 @@ CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar if [ -n "$JAVA_HOME" ] ; then if [ -x "$JAVA_HOME/jre/sh/java" ] ; then # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" + JAVACMD=$JAVA_HOME/jre/sh/java else - JAVACMD="$JAVA_HOME/bin/java" + JAVACMD=$JAVA_HOME/bin/java fi if [ ! -x "$JAVACMD" ] ; then die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME @@ -98,7 +132,7 @@ Please set the JAVA_HOME variable in your environment to match the location of your Java installation." fi else - JAVACMD="java" + JAVACMD=java which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. Please set the JAVA_HOME variable in your environment to match the @@ -106,80 +140,95 @@ location of your Java installation." fi # Increase the maximum file descriptors if we can. -if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then - MAX_FD_LIMIT=`ulimit -H -n` - if [ $? -eq 0 ] ; then - if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then - MAX_FD="$MAX_FD_LIMIT" - fi - ulimit -n $MAX_FD - if [ $? -ne 0 ] ; then - warn "Could not set maximum file descriptor limit: $MAX_FD" - fi - else - warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT" - fi -fi - -# For Darwin, add options to specify how the application appears in the dock -if $darwin; then - GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\"" -fi - -# For Cygwin or MSYS, switch paths to Windows format before running java -if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then - APP_HOME=`cygpath --path --mixed "$APP_HOME"` - CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` - - JAVACMD=`cygpath --unix "$JAVACMD"` - - # We build the pattern for arguments to be converted via cygpath - ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null` - SEP="" - for dir in $ROOTDIRSRAW ; do - ROOTDIRS="$ROOTDIRS$SEP$dir" - SEP="|" - done - OURCYGPATTERN="(^($ROOTDIRS))" - # Add a user-defined pattern to the cygpath arguments - if [ "$GRADLE_CYGPATTERN" != "" ] ; then - OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)" - fi - # Now convert the arguments - kludge to limit ourselves to /bin/sh - i=0 - for arg in "$@" ; do - CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -` - CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option - - if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition - eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"` - else - eval `echo args$i`="\"$arg\"" - fi - i=`expr $i + 1` - done - case $i in - 0) set -- ;; - 1) set -- "$args0" ;; - 2) set -- "$args0" "$args1" ;; - 3) set -- "$args0" "$args1" "$args2" ;; - 4) set -- "$args0" "$args1" "$args2" "$args3" ;; - 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;; - 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;; - 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;; - 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;; - 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;; +if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then + case $MAX_FD in #( + max*) + MAX_FD=$( ulimit -H -n ) || + warn "Could not query maximum file descriptor limit" + esac + case $MAX_FD in #( + '' | soft) :;; #( + *) + ulimit -n "$MAX_FD" || + warn "Could not set maximum file descriptor limit to $MAX_FD" esac fi -# Escape application args -save () { - for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done - echo " " -} -APP_ARGS=`save "$@"` +# Collect all arguments for the java command, stacking in reverse order: +# * args from the command line +# * the main class name +# * -classpath +# * -D...appname settings +# * --module-path (only if needed) +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables. -# Collect all arguments for the java command, following the shell quoting and substitution rules -eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS" +# For Cygwin or MSYS, switch paths to Windows format before running java +if "$cygwin" || "$msys" ; then + APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) + CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) + + JAVACMD=$( cygpath --unix "$JAVACMD" ) + + # Now convert the arguments - kludge to limit ourselves to /bin/sh + for arg do + if + case $arg in #( + -*) false ;; # don't mess with options #( + /?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath + [ -e "$t" ] ;; #( + *) false ;; + esac + then + arg=$( cygpath --path --ignore --mixed "$arg" ) + fi + # Roll the args list around exactly as many times as the number of + # args, so each arg winds up back in the position where it started, but + # possibly modified. + # + # NB: a `for` loop captures its iteration list before it begins, so + # changing the positional parameters here affects neither the number of + # iterations, nor the values presented in `arg`. + shift # remove old arg + set -- "$@" "$arg" # push replacement arg + done +fi + +# Collect all arguments for the java command; +# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of +# shell script including quotes and variable substitutions, so put them in +# double quotes to make sure that they get re-expanded; and +# * put everything else in single quotes, so that it's not re-expanded. + +set -- \ + "-Dorg.gradle.appname=$APP_BASE_NAME" \ + -classpath "$CLASSPATH" \ + org.gradle.wrapper.GradleWrapperMain \ + "$@" + +# Use "xargs" to parse quoted args. +# +# With -n1 it outputs one arg per line, with the quotes and backslashes removed. +# +# In Bash we could simply go: +# +# readarray ARGS < <( xargs -n1 <<<"$var" ) && +# set -- "${ARGS[@]}" "$@" +# +# but POSIX shell has neither arrays nor command substitution, so instead we +# post-process each arg (as a line of input to sed) to backslash-escape any +# character that might be a shell metacharacter, then use eval to reverse +# that process (while maintaining the separation between arguments), and wrap +# the whole thing up as a single "set" statement. +# +# This will of course break if any of these variables contains a newline or +# an unmatched quote. +# + +eval "set -- $( + printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" | + xargs -n1 | + sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' | + tr '\n' ' ' + )" '"$@"' exec "$JAVACMD" "$@"