diff --git a/.github/workflows/build-mariadb.yml b/.github/workflows/build-mariadb.yml index 33b8cda34d6..26aebd539ab 100644 --- a/.github/workflows/build-mariadb.yml +++ b/.github/workflows/build-mariadb.yml @@ -10,7 +10,7 @@ jobs: services: mariad: - image: mariadb:11.0 + image: mariadb:11.1 ports: - 3306:3306 env: diff --git a/.github/workflows/build-mysql.yml b/.github/workflows/build-mysql.yml index 658c89c752f..40b0e8c721b 100644 --- a/.github/workflows/build-mysql.yml +++ b/.github/workflows/build-mysql.yml @@ -10,7 +10,7 @@ jobs: services: mariad: - image: mysql:8.0 + image: mysql:8.2 ports: - 3306:3306 env: diff --git a/build.gradle b/build.gradle index 4d932bdd995..213ed14a06a 100644 --- a/build.gradle +++ b/build.gradle @@ -70,12 +70,12 @@ plugins { id 'me.qoomon.git-versioning' version '6.4.2' id "org.barfuin.gradle.taskinfo" version "2.1.0" id 'com.adarshr.test-logger' version '4.0.0' - id 'com.diffplug.spotless' version '6.19.0' apply false - id 'org.nosphere.apache.rat' version '0.8.0' apply false + id 'com.diffplug.spotless' version '6.22.0' apply false + id 'org.nosphere.apache.rat' version '0.8.1' apply false id 'com.github.hierynomus.license' version '0.16.1' apply false id 'com.github.jk1.dependency-license-report' version '2.5' apply false id 'org.zeroturnaround.gradle.jrebel' version '1.1.12' apply false - id 'org.springframework.boot' version '3.1.1' apply false + id 'org.springframework.boot' version '3.1.5' apply false id 'net.ltgt.errorprone' version '3.1.0' apply false id 'io.swagger.core.v3.swagger-gradle-plugin' version '2.2.11' apply false id 'com.gorylenko.gradle-git-properties' version '2.4.1' apply false @@ -85,12 +85,12 @@ plugins { id 'org.asciidoctor.jvm.revealjs' version '3.3.2' apply false id 'org.asciidoctor.jvm.gems' version '3.3.2' apply false id 'org.asciidoctor.kindlegen.base' version '3.2.0' apply false - id 'com.google.cloud.tools.jib' version '3.3.2' apply false + id 'com.google.cloud.tools.jib' version '3.4.0' apply false id 'org.sonarqube' version '4.4.1.3373' - id 'com.github.andygoossens.modernizer' version '1.8.0' apply false - id 'com.github.spotbugs' version '5.0.14' apply false + id 'com.github.andygoossens.modernizer' version '1.9.0' apply false + id 'com.github.spotbugs' version '5.2.1' apply false id 'se.thinkcode.cucumber-runner' version '0.0.11' apply false - id "com.github.davidmc24.gradle.plugin.avro-base" version "1.7.1" apply false + id "com.github.davidmc24.gradle.plugin.avro-base" version "1.9.1" apply false } apply from: "${rootDir}/buildSrc/src/main/groovy/org.apache.fineract.release.gradle" diff --git a/buildSrc/build.gradle b/buildSrc/build.gradle index bd62d838ab3..98a58971861 100644 --- a/buildSrc/build.gradle +++ b/buildSrc/build.gradle @@ -20,7 +20,7 @@ import static org.slf4j.LoggerFactory.* plugins { - id 'io.spring.dependency-management' version '1.1.0' + id 'io.spring.dependency-management' version '1.1.3' id 'groovy' id 'java-gradle-plugin' id 'groovy-gradle-plugin' diff --git a/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle b/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle index fc5c8365a7a..00274ff5f39 100644 --- a/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle +++ b/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle @@ -22,15 +22,15 @@ apply plugin: 'io.spring.dependency-management' // https://github.com/spring-gradle-plugins/dependency-management-plugin dependencyManagement { imports { - mavenBom 'org.springframework:spring-framework-bom:6.0.10' - mavenBom 'org.springframework.boot:spring-boot-dependencies:3.1.1' - mavenBom 'org.jetbrains.kotlin:kotlin-bom:1.8.22' - mavenBom 'org.junit:junit-bom:5.9.3' - mavenBom 'com.fasterxml.jackson:jackson-bom:2.15.2' - mavenBom 'io.cucumber:cucumber-bom:7.12.1' - mavenBom 'io.netty:netty-bom:4.1.94.Final' - mavenBom 'org.mockito:mockito-bom:5.4.0' - mavenBom 'software.amazon.awssdk:bom:2.20.97' + mavenBom 'org.springframework:spring-framework-bom:6.0.13' + mavenBom 'org.springframework.boot:spring-boot-dependencies:3.1.5' + mavenBom 'org.jetbrains.kotlin:kotlin-bom:1.9.20' + mavenBom 'org.junit:junit-bom:5.10.0' + mavenBom 'com.fasterxml.jackson:jackson-bom:2.15.3' + mavenBom 'io.cucumber:cucumber-bom:7.14.0' + mavenBom 'io.netty:netty-bom:4.1.100.Final' + mavenBom 'org.mockito:mockito-bom:5.7.0' + mavenBom 'software.amazon.awssdk:bom:2.21.15' } dependencies { @@ -38,16 +38,16 @@ dependencyManagement { // We do not use :+ to get the latest available version available on Maven Central, as that could suddenly break things. // We use the Renovate Bot to automatically propose Pull Requests (PRs) when upgrades for all of these versions are available. - dependency 'org.slf4j:slf4j-api:2.0.7' - dependency 'org.slf4j:slf4j-simple:2.0.7' - dependency 'org.slf4j:jcl-over-slf4j:2.0.7' - dependency 'org.slf4j:jul-to-slf4j:2.0.7' - dependency 'org.slf4j:log4j-over-slf4j:2.0.7' - dependency 'ch.qos.logback:logback-core:1.4.8' - dependency 'ch.qos.logback:logback-classic:1.4.8' + dependency 'org.slf4j:slf4j-api:2.0.9' + dependency 'org.slf4j:slf4j-simple:2.0.9' + dependency 'org.slf4j:jcl-over-slf4j:2.0.9' + dependency 'org.slf4j:jul-to-slf4j:2.0.9' + dependency 'org.slf4j:log4j-over-slf4j:2.0.9' + dependency 'ch.qos.logback:logback-core:1.4.11' + dependency 'ch.qos.logback:logback-classic:1.4.11' dependency 'ch.qos.logback.contrib:logback-json-classic:0.1.5' dependency 'ch.qos.logback.contrib:logback-jackson:0.1.5' - dependency 'org.codehaus.janino:janino:3.1.9' + dependency 'org.codehaus.janino:janino:3.1.10' dependency 'org.eclipse.persistence:org.eclipse.persistence.jpa:4.0.0' @@ -55,25 +55,25 @@ dependencyManagement { dependency 'com.google.code.gson:gson:2.10.1' dependency 'com.google.truth:truth:1.1.5' dependency 'com.google.truth.extensions:truth-java8-extension:1.1.5' - dependency 'com.google.googlejavaformat:google-java-format:1.17.0' + dependency 'com.google.googlejavaformat:google-java-format:1.18.1' dependency ('org.apache.commons:commons-email:1.5') { exclude 'com.sun.mail:javax.mail' exclude 'javax.activation:activation' } - dependency 'commons-io:commons-io:2.13.0' - dependency 'com.github.librepdf:openpdf:1.3.30' - dependency ('org.mnode.ical4j:ical4j:3.2.11') { + dependency 'commons-io:commons-io:2.15.0' + dependency 'com.github.librepdf:openpdf:1.3.32' + dependency ('org.mnode.ical4j:ical4j:3.2.14') { exclude 'com.sun.mail:javax.mail' exclude 'org.codehaus.groovy:groovy' } dependency 'org.apache.commons:commons-csv:1.10.0' dependency 'org.quartz-scheduler:quartz:2.3.2' - dependency 'software.amazon.awssdk:bom:2.20.97' + dependency 'software.amazon.awssdk:bom:2.21.15' dependency 'org.ehcache:ehcache:3.10.8' - dependency 'com.github.spullara.mustache.java:compiler:0.9.10' + dependency 'com.github.spullara.mustache.java:compiler:0.9.11' dependency 'com.jayway.jsonpath:json-path:2.8.0' - dependency 'org.apache.tika:tika-core:2.8.0' - dependency ('org.apache.tika:tika-parser-microsoft-module:2.8.0') { + dependency 'org.apache.tika:tika-core:2.9.1' + dependency ('org.apache.tika:tika-parser-microsoft-module:2.9.1') { exclude 'org.bouncycastle:bcprov-jdk15on' exclude 'org.bouncycastle:bcmail-jdk15on' exclude 'org.bouncycastle:bcprov-jdk18on' @@ -92,7 +92,7 @@ dependencyManagement { exclude 'org.apache.commons:commons-compress' exclude 'xml-apis:xml-apis' } - dependency ('org.apache.tika:tika-parser-miscoffice-module:2.8.0') { + dependency ('org.apache.tika:tika-parser-miscoffice-module:2.9.1') { exclude 'org.bouncycastle:bcprov-jdk15on' exclude 'org.bouncycastle:bcmail-jdk15on' exclude 'org.bouncycastle:bcprov-jdk18on' @@ -116,19 +116,19 @@ dependencyManagement { dependency 'jakarta.management.j2ee:jakarta.management.j2ee-api:1.1.4' dependency 'jakarta.jms:jakarta.jms-api:3.1.0' dependency 'jakarta.ws.rs:jakarta.ws.rs-api:3.1.0' - dependency 'org.glassfish.jersey.media:jersey-media-multipart:3.1.2' + dependency 'org.glassfish.jersey.media:jersey-media-multipart:3.1.3' dependency 'org.glassfish.jaxb:jaxb-runtime:2.3.6' // Swagger needs exactly this version dependency 'org.apache.bval:org.apache.bval.bundle:3.0.0' dependency 'joda-time:joda-time:2.12.5' - dependency 'io.github.classgraph:classgraph:4.8.160' + dependency 'io.github.classgraph:classgraph:4.8.164' dependency 'org.awaitility:awaitility:4.2.0' - dependency 'com.github.spotbugs:spotbugs-annotations:4.7.3' + dependency 'com.github.spotbugs:spotbugs-annotations:4.8.0' dependency 'javax.cache:cache-api:1.1.1' dependency 'org.mock-server:mockserver-junit-jupiter:5.15.0' - dependency 'org.webjars:webjars-locator-core:0.53' + dependency 'org.webjars:webjars-locator-core:0.54' dependency 'com.icegreen:greenmail-junit5:2.0.0' - dependency 'com.intuit.karate:karate-junit5:1.4.0' + dependency 'com.intuit.karate:karate-junit5:1.4.1' // fineract client dependencies dependency "com.squareup.retrofit2:retrofit:2.9.0" @@ -148,37 +148,37 @@ dependencyManagement { dependency "org.apache.oltu.oauth2:org.apache.oltu.oauth2.common:1.0.1" dependency "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:1.0.1" dependency "org.apache.oltu.oauth2:org.apache.oltu.oauth2.httpclient4:1.0.1" - dependency "com.squareup.okhttp3:okhttp:4.11.0" - dependency "com.squareup.okhttp3:okcurl:4.11.0" - dependency "com.squareup.okhttp3:logging-interceptor:4.11.0" + dependency "com.squareup.okhttp3:okhttp:4.12.0" + dependency "com.squareup.okhttp3:okcurl:4.12.0" + dependency "com.squareup.okhttp3:logging-interceptor:4.12.0" dependency "com.squareup.okhttp3:okhttp-apache:4.9.3" dependency "com.squareup.okhttp3:okhttp-android-support:4.9.3" - dependency "com.squareup.okhttp3:okhttp-urlconnection:4.11.0" - dependency "com.squareup.okhttp3:okhttp-sse:4.11.0" + dependency "com.squareup.okhttp3:okhttp-urlconnection:4.12.0" + dependency "com.squareup.okhttp3:okhttp-sse:4.12.0" dependency "io.gsonfire:gson-fire:1.8.5" dependency "com.google.code.findbugs:jsr305:3.0.2" dependency "commons-codec:commons-codec:1.16.0" - dependency "org.projectlombok:lombok:1.18.28" + dependency "org.projectlombok:lombok:1.18.30" - dependency 'org.bouncycastle:bcpkix-jdk15to18:1.75' - dependency 'org.bouncycastle:bcprov-jdk15to18:1.75' + dependency 'org.bouncycastle:bcpkix-jdk15to18:1.76' + dependency 'org.bouncycastle:bcprov-jdk15to18:1.76' dependency 'org.bouncycastle:bcprov-jdk15on:1.70' dependency 'org.bouncycastle:bcpg-jdk15on:1.70' - dependency 'org.eclipse.jgit:org.eclipse.jgit:6.6.0.202305301015-r' - dependency 'org.eclipse.jgit:org.eclipse.jgit.ssh.apache:6.6.0.202305301015-r' + dependency 'org.eclipse.jgit:org.eclipse.jgit:6.7.0.202309050840-r' + dependency 'org.eclipse.jgit:org.eclipse.jgit.ssh.apache:6.7.0.202309050840-r' dependency 'org.tmatesoft.svnkit:svnkit:1.10.11' dependency 'com.vdurmont:semver4j:3.1.0' dependency 'org.beryx:text-io:3.4.1' - dependency ('org.springdoc:springdoc-openapi-starter-webmvc-ui:2.1.0') { + dependency ('org.springdoc:springdoc-openapi-starter-webmvc-ui:2.2.0') { exclude 'io.swagger.core.v3:swagger-core' } - dependency 'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.12.0' + dependency 'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.14.1' - dependency ('org.apache.activemq:activemq-client-jakarta:5.18.2') { + dependency ('org.apache.activemq:activemq-client-jakarta:5.18.3') { exclude 'javax.annotation:javax.annotation-api' } @@ -200,7 +200,7 @@ dependencyManagement { exclude 'jakarta.activation:jakarta.activation-api' } - dependency ('org.liquibase:liquibase-core:4.23.0') { + dependency ('org.liquibase:liquibase-core:4.24.0') { exclude 'javax.xml.bind:jaxb-api' } @@ -214,28 +214,28 @@ dependencyManagement { dependency 'org.owasp.esapi:esapi:2.5.2.0' dependency 'org.awaitility:awaitility:4.2.0' - dependencySet(group: 'org.apache.poi', version: '5.2.3') { + dependencySet(group: 'org.apache.poi', version: '5.2.4') { entry 'poi' entry 'poi-ooxml' entry 'poi-ooxml-schemas' } - dependencySet(group: 'io.rest-assured', version: '5.3.1') { + dependencySet(group: 'io.rest-assured', version: '5.3.2') { entry 'rest-assured' entry 'json-path' entry 'xml-path' } - dependency 'org.apache.groovy:groovy-xml:4.0.13' - dependency 'org.apache.groovy:groovy-json:4.0.13' + dependency 'org.apache.groovy:groovy-xml:4.0.14' + dependency 'org.apache.groovy:groovy-json:4.0.15' dependency 'org.mapstruct:mapstruct:1.5.5.Final' dependency 'org.mapstruct:mapstruct-processor:1.5.5.Final' - dependency "org.apache.avro:avro:1.11.1" + dependency "org.apache.avro:avro:1.11.3" - dependency "io.github.resilience4j:resilience4j-spring-boot2:2.0.2" + dependency "io.github.resilience4j:resilience4j-spring-boot2:2.1.0" - dependency ('org.mariadb.jdbc:mariadb-java-client:3.1.4') { + dependency ('org.mariadb.jdbc:mariadb-java-client:3.2.0') { exclude 'org.slf4j:jcl-over-slf4j' exclude 'org.slf4j:slf4j-api' } diff --git a/custom/docker/docker-compose.yml b/custom/docker/docker-compose.yml index adc1180e34f..ae5b69d0000 100644 --- a/custom/docker/docker-compose.yml +++ b/custom/docker/docker-compose.yml @@ -21,7 +21,7 @@ version: '3.7' services: # Backend service fineractmysql: - image: mariadb:11.0 + image: mariadb:11.1 volumes: - ../../fineract-db/server_collation.cnf:/etc/mysql/conf.d/server_collation.cnf - ../../fineract-db/docker:/docker-entrypoint-initdb.d:Z,ro diff --git a/docker-compose.yml b/docker-compose.yml index dd2e3fe66b8..a07fac485ec 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -21,7 +21,7 @@ version: '3.7' services: # Backend service fineractmysql: - image: mariadb:11.0 + image: mariadb:11.1 volumes: - ./fineract-db/server_collation.cnf:/etc/mysql/conf.d/server_collation.cnf - ./fineract-db/docker:/docker-entrypoint-initdb.d:Z,ro diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 249e5832f09..7f93135c49b 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 15de90249f9..3fa8f862f75 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,7 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.4-bin.zip +networkTimeout=10000 +validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/gradlew b/gradlew index a69d9cb6c20..1aa94a42690 100755 --- a/gradlew +++ b/gradlew @@ -55,7 +55,7 @@ # 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 +# https://github.com/gradle/gradle/blob/HEAD/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/. @@ -80,13 +80,11 @@ do esac done -APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit - -APP_NAME="Gradle" +# This is normally unused +# shellcheck disable=SC2034 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"' +# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) +APP_HOME=$( cd "${APP_HOME:-./}" > /dev/null && pwd -P ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -133,22 +131,29 @@ location of your Java installation." fi else 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. + if ! command -v java >/dev/null 2>&1 + then + 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 location of your Java installation." + fi fi # Increase the maximum file descriptors if we can. if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then case $MAX_FD in #( max*) + # In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 MAX_FD=$( ulimit -H -n ) || warn "Could not query maximum file descriptor limit" esac case $MAX_FD in #( '' | soft) :;; #( *) + # In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked. + # shellcheck disable=SC2039,SC3045 ulimit -n "$MAX_FD" || warn "Could not set maximum file descriptor limit to $MAX_FD" esac @@ -193,11 +198,15 @@ if "$cygwin" || "$msys" ; then 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. + +# 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"' + +# Collect all arguments for the java command: +# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# and any embedded shellness will be escaped. +# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be +# treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ diff --git a/gradlew.bat b/gradlew.bat index 53a6b238d41..6689b85beec 100644 --- a/gradlew.bat +++ b/gradlew.bat @@ -26,6 +26,7 @@ if "%OS%"=="Windows_NT" setlocal set DIRNAME=%~dp0 if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused set APP_BASE_NAME=%~n0 set APP_HOME=%DIRNAME% diff --git a/settings.gradle b/settings.gradle index c2e69e4423e..871f5436a06 100644 --- a/settings.gradle +++ b/settings.gradle @@ -18,8 +18,8 @@ */ plugins { - id 'com.gradle.enterprise' version '3.13.4' - id 'com.gradle.common-custom-user-data-gradle-plugin' version '1.11' + id 'com.gradle.enterprise' version '3.15.1' + id 'com.gradle.common-custom-user-data-gradle-plugin' version '1.12' } def isCI = System.getenv('JENKINS_URL') != null