From 6aa668a5f545e785673324b4b4d02376d27b41dc Mon Sep 17 00:00:00 2001 From: Aleksandar Vidakovic Date: Wed, 4 May 2022 16:59:13 +0200 Subject: [PATCH] FINERACT-1470-2: Build issues --- .github/workflows/build-postgresql.yml | 18 ++++----- .github/workflows/build.yml | 18 ++++----- .github/workflows/sonarqube.yml | 10 +---- build.gradle | 16 ++++---- .../org.apache.fineract.dependencies.gradle | 15 ++++--- fineract-client/build.gradle | 24 +++++------- fineract-provider/build.gradle | 39 ++++++++----------- fineract-war/build.gradle | 9 +++-- gradle.properties | 1 + integration-tests/build.gradle | 6 ++- oauth2-tests/build.gradle | 6 ++- twofactor-tests/build.gradle | 6 ++- 12 files changed, 75 insertions(+), 93 deletions(-) diff --git a/.github/workflows/build-postgresql.yml b/.github/workflows/build-postgresql.yml index 862451e64..f3f2f44e5 100644 --- a/.github/workflows/build-postgresql.yml +++ b/.github/workflows/build-postgresql.yml @@ -29,15 +29,6 @@ jobs: env: TZ: Asia/Kolkata steps: - - name: Set up cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - name: Checkout uses: actions/checkout@v3 - name: Set up JDK 17 @@ -46,6 +37,11 @@ jobs: java-version: '17' distribution: 'zulu' cache: gradle + - uses: actions/setup-node@v3 + with: + node-version: 16 + - name: Congfigure vega-cli + run: npm i -g vega-cli --unsafe - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@859c33240bd026ce8d5f711f5adcc65c2f8eafc1 - name: Verify PostgreSQL connection @@ -60,10 +56,10 @@ jobs: - name: Install additional software run: | sudo apt-get update - sudo apt-get install ghostscript -y + sudo apt-get install ghostscript graphviz -y - name: Basic Auth Build & Test - run: ./gradlew --no-daemon -q --console=plain licenseMain licenseTest check build test --fail-fast doc -x :twofactor-tests:test -x :oauth2-test:test -PdbType=postgresql + run: ./gradlew --no-daemon -q --console=plain build test --fail-fast doc -x :twofactor-tests:test -x :oauth2-test:test -PdbType=postgresql - name: 2FA Build & Test run: ./gradlew --no-daemon -q --console=plain :twofactor-tests:test --fail-fast -PdbType=postgresql diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b40cb8f63..21e4d5b5c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -28,15 +28,6 @@ jobs: env: TZ: Asia/Kolkata steps: - - name: Set up cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - name: Checkout uses: actions/checkout@v3 - name: Set up JDK 17 @@ -45,6 +36,11 @@ jobs: java-version: '17' distribution: 'zulu' cache: gradle + - uses: actions/setup-node@v3 + with: + node-version: 16 + - name: Congfigure vega-cli + run: npm i -g vega-cli --unsafe - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@859c33240bd026ce8d5f711f5adcc65c2f8eafc1 - name: Verify MariaDB connection @@ -59,10 +55,10 @@ jobs: - name: Install additional software run: | sudo apt-get update - sudo apt-get install ghostscript -y + sudo apt-get install ghostscript graphviz -y - name: Basic Auth Build & Test - run: ./gradlew --no-daemon -q --console=plain licenseMain licenseTest check build test --fail-fast doc -x :twofactor-tests:test -x :oauth2-test:test + run: ./gradlew --no-daemon -q --console=plain build test --fail-fast doc -x :twofactor-tests:test -x :oauth2-test:test - name: 2FA Build & Test run: ./gradlew --no-daemon -q --console=plain :twofactor-tests:test --fail-fast diff --git a/.github/workflows/sonarqube.yml b/.github/workflows/sonarqube.yml index e47d371d8..d4258af1b 100644 --- a/.github/workflows/sonarqube.yml +++ b/.github/workflows/sonarqube.yml @@ -18,15 +18,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} SONAR_TOKEN: ${{ secrets.SONARCLOUD_TOKEN }} steps: - - name: Set up cache - uses: actions/cache@v3 - with: - path: | - ~/.gradle/caches - ~/.gradle/wrapper - key: ${{ runner.os }}-gradle-${{ hashFiles('**/*.gradle*', '**/gradle-wrapper.properties') }} - restore-keys: | - ${{ runner.os }}-gradle- - name: Checkout uses: actions/checkout@v3 - name: Set up JDK 17 @@ -34,6 +25,7 @@ jobs: with: java-version: '17' distribution: 'zulu' + cache: gradle - name: Validate Gradle wrapper uses: gradle/wrapper-validation-action@859c33240bd026ce8d5f711f5adcc65c2f8eafc1 - name: Sonarqube diff --git a/build.gradle b/build.gradle index c874d2482..5a1042533 100644 --- a/build.gradle +++ b/build.gradle @@ -58,7 +58,7 @@ buildscript { plugins { id "org.barfuin.gradle.taskinfo" version "1.4.0" id 'com.adarshr.test-logger' version '3.2.0' - id 'com.diffplug.spotless' version '6.5.1' apply false + id 'com.diffplug.spotless' version '6.5.2' apply false id 'org.nosphere.apache.rat' version '0.7.1' apply false id 'com.github.hierynomus.license' version '0.16.1' apply false id 'com.github.jk1.dependency-license-report' version '2.1' apply false @@ -79,7 +79,7 @@ plugins { id 'org.sonarqube' version '3.3' id 'com.github.andygoossens.modernizer' version '1.6.2' apply false id 'com.github.spotbugs' version '5.0.6' apply false - id 'se.thinkcode.cucumber-runner' version '0.0.10' apply false + id 'se.thinkcode.cucumber-runner' version '0.0.11' apply false } apply from: "${rootDir}/buildSrc/src/main/groovy/org.apache.fineract.release.gradle" @@ -92,8 +92,6 @@ ext['groovy.version'] = '3.0.10' ext['swaggerFile'] = "$rootDir/fineract-provider/build/classes/java/main/static/fineract.yaml".toString() allprojects { - apply from: "${rootDir}/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle" - group = 'org.apache.fineract' jgitver { @@ -248,6 +246,7 @@ allprojects { // Git build info "**/git.properties", ".mailmap", + '**/images/diag-*.svg', ] } } @@ -264,6 +263,7 @@ configure(project.fineractJavaProjects) { apply plugin: 'com.github.spotbugs' apply plugin: 'com.github.andygoossens.modernizer' apply plugin: 'se.thinkcode.cucumber-runner' + apply from: "${rootDir}/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle" /* define the valid syntax level for source files */ @@ -366,10 +366,6 @@ configure(project.fineractJavaProjects) { lineEndings 'UNIX' } - // compileJava may create more source files into generated, hence we need to run these tasks after it - licenseMain.dependsOn compileJava - processResources.dependsOn compileJava - // If we are running Gradle within Eclipse to enhance classes, // set the classes directory to point to Eclipse's default build directory if (project.hasProperty('env') && project.getProperty('env') == 'eclipse') { @@ -502,6 +498,10 @@ configure(project.fineractJavaProjects) { } } + compileJava { + dependsOn(rat, licenseMain, licenseTest) + } + dependencies { implementation ( 'ch.qos.logback:logback-core', diff --git a/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle b/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle index 09aaefbf1..cc01b28f8 100644 --- a/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle +++ b/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle @@ -27,10 +27,9 @@ dependencyManagement { mavenBom 'org.jetbrains.kotlin:kotlin-bom:1.6.21' mavenBom 'org.junit:junit-bom:5.8.2' mavenBom 'com.fasterxml.jackson:jackson-bom:2.13.2.1' - mavenBom 'io.cucumber:cucumber-bom:7.3.3' + mavenBom 'io.cucumber:cucumber-bom:7.3.4' mavenBom 'io.netty:netty-bom:4.1.76.Final' mavenBom 'org.mockito:mockito-bom:4.5.1' - mavenBom 'io.github.swagger2markup:swagger2markup-bom:1.3.4' } dependencies { @@ -62,11 +61,11 @@ dependencyManagement { exclude 'com.sun.mail:javax.mail' } dependency 'org.quartz-scheduler:quartz:2.3.2' - dependency 'com.amazonaws:aws-java-sdk-s3:1.12.210' + dependency 'com.amazonaws:aws-java-sdk-s3:1.12.213' dependency 'org.ehcache:ehcache:3.10.0' dependency 'com.github.spullara.mustache.java:compiler:0.9.10' dependency 'com.jayway.jsonpath:json-path:2.7.0' - dependency 'org.apache.tika:tika-core:2.3.0' + dependency 'org.apache.tika:tika-core:2.4.0' dependency 'org.apache.httpcomponents:httpclient:4.5.13' dependency 'jakarta.management.j2ee:jakarta.management.j2ee-api:1.1.4' dependency 'jakarta.jms:jakarta.jms-api:2.0.3' @@ -76,11 +75,11 @@ dependencyManagement { dependency 'io.github.classgraph:classgraph:4.8.146' dependency 'org.awaitility:awaitility:4.2.0' - dependency 'com.github.spotbugs:spotbugs-annotations:4.6.0' + dependency 'com.github.spotbugs:spotbugs-annotations:4.7.0' dependency 'javax.cache:cache-api:1.1.1' dependency 'org.mock-server:mockserver-junit-jupiter:5.13.2' dependency 'org.webjars:webjars-locator-core:0.50' - dependency 'com.icegreen:greenmail-junit5:1.6.8' + dependency 'com.icegreen:greenmail-junit5:1.6.9' dependency 'com.intuit.karate:karate-junit5:1.2.0.RC6' // fineract client dependencies @@ -131,7 +130,7 @@ dependencyManagement { dependency 'org.springdoc:springdoc-openapi-security:1.6.8' dependency 'org.springdoc:springdoc-openapi-javadoc:1.6.8' - dependency 'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.5.0' + dependency 'com.google.cloud.sql:mysql-socket-factory-connector-j-8:1.6.0' dependency ('org.apache.activemq:activemq-broker:5.17.1') { exclude 'javax.annotation:javax.annotation-api' @@ -155,7 +154,7 @@ dependencyManagement { exclude 'jakarta.activation:jakarta.activation-api' } - dependency ('org.liquibase:liquibase-core:4.9.1') { + dependency ('org.liquibase:liquibase-core:4.10.0') { exclude 'javax.xml.bind:jaxb-api' } diff --git a/fineract-client/build.gradle b/fineract-client/build.gradle index 01d994cc6..717cb3652 100644 --- a/fineract-client/build.gradle +++ b/fineract-client/build.gradle @@ -31,6 +31,7 @@ openApiMeta { generatorName = 'Fineract' packageName = 'org.apache.fineract.client' outputFolder = "$buildDir/meta".toString() + // trick to make sure fineract.yaml is generated first } openApiValidate { @@ -59,10 +60,7 @@ task buildJavaSdk(type: org.openapitools.generator.gradle.plugin.tasks.GenerateT generateModelTests = false generateApiTests = false ignoreFileOverride = "$projectDir/.openapi-generator-ignore" - // trick to make sure fineract.yaml is generated first - dependsOn = [ - ':fineract-provider:resolve' - ] + dependsOn(':fineract-provider:resolve') } task buildTypescriptAngularSdk(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask){ @@ -82,9 +80,7 @@ task buildTypescriptAngularSdk(type: org.openapitools.generator.gradle.plugin.ta npmName: '@apache/fineract-client', npmRepository: "${npmRepository}" ] - dependsOn = [ - ':fineract-provider:resolve' - ] + dependsOn(':fineract-provider:resolve') } task buildAsciidoc(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask){ @@ -97,17 +93,11 @@ task buildAsciidoc(type: org.openapitools.generator.gradle.plugin.tasks.Generate apiPackage = 'org.apache.fineract.client.services' invokerPackage = 'org.apache.fineract.client' modelPackage = 'org.apache.fineract.client.models' - dependsOn = [ - ':fineract-provider:resolve' - ] + dependsOn(':fineract-provider:resolve') } // TODO: @vidakovic we could provide even more client libs in different languages (Go, Ruby, Swift etc.) -licenseMain.dependsOn(buildJavaSdk, licenseFormatMain, spotlessMiscApply) -licenseMain.dependsOn(buildTypescriptAngularSdk, licenseFormatMain, spotlessMiscApply) -licenseMain.dependsOn(buildAsciidoc, licenseFormatMain, spotlessMiscApply) - -compileJava.dependsOn(licenseFormatMain, spotlessMiscApply) +compileJava.dependsOn(buildJavaSdk, buildTypescriptAngularSdk, buildAsciidoc, licenseFormatMain, spotlessMiscApply) java { // keep this at Java 8, not 17; see https://issues.apache.org/jira/browse/FINERACT-1214 @@ -134,3 +124,7 @@ test { } sourceSets.main.java.srcDir new File(buildDir, "generated/java/src/main/java") + +// NOTE: Gradle suggested these dependencies +licenseFormatMain.dependsOn buildJavaSdk +licenseMain.dependsOn buildJavaSdk diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle index 981c9d64c..8dd85a234 100644 --- a/fineract-provider/build.gradle +++ b/fineract-provider/build.gradle @@ -56,28 +56,25 @@ task prepareInputYaml { doLast { copy { from file('config/swagger/fineract-input.yaml.template') - into file('config/swagger') + into file("${buildDir}/tmp/swagger") rename { String filename -> return 'fineract-input.yaml' } filter(ReplaceTokens, tokens: [VERSION: "${project.version}".toString()]) } } } -rat.dependsOn prepareInputYaml - resolve { - logging.captureStandardOutput LogLevel.INFO + logging.captureStandardOutput LogLevel.QUIET outputFileName = 'fineract' outputFormat = 'JSONANDYAML' - prettyPrint = true + prettyPrint = false classpath = sourceSets.main.runtimeClasspath outputDir = file("${buildDir}/classes/java/main/static") - openApiFile = file("config/swagger/fineract-input.yaml") + // openApiFile = file("${buildDir}/tmp/swagger/fineract-input.yaml") sortOutput = true + // dependsOn(prepareInputYaml) } -resolve.dependsOn prepareInputYaml - configurations { providedRuntime // needed for Spring Boot executable WAR providedCompile @@ -111,11 +108,6 @@ modernizer { ] } -compileJava { - dependsOn rat - finalizedBy resolve -} - // If we are running Gradle within Eclipse to enhance classes with OpenJPA, // set the classes directory to point to Eclipse's default build directory if (project.hasProperty('env') && project.getProperty('env') == 'eclipse') @@ -158,7 +150,7 @@ configurations { } dependencies { driver 'org.mariadb.jdbc:mariadb-java-client:2.7.5' - driver 'org.postgresql:postgresql:42.3.4' + driver 'org.postgresql:postgresql:42.3.5' } URLClassLoader loader = GroovyObject.class.classLoader @@ -213,22 +205,21 @@ bootRun { dependencies { implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.5' - implementation 'org.postgresql:postgresql:42.3.4' + implementation 'org.postgresql:postgresql:42.3.5' } } springBoot { mainClass = 'org.apache.fineract.ServerApplication' - buildInfo() } bootJar { duplicatesStrategy = DuplicatesStrategy.EXCLUDE manifest { - attributes('Main-Class': 'org.springframework.boot.loader.PropertiesLauncher', 'Implementation-Title': 'Apache Fineract', 'Implementation-Version': archiveVersion) + attributes('Main-Class': 'org.springframework.boot.loader.PropertiesLauncher', 'Implementation-Title': 'Apache Fineract', 'Implementation-Version': project.version) } - dependsOn resolve classifier = '' + dependsOn resolve } jib { @@ -279,7 +270,7 @@ jib { dependencies { implementation 'org.mariadb.jdbc:mariadb-java-client:2.7.5' - implementation 'org.postgresql:postgresql:42.3.4' + implementation 'org.postgresql:postgresql:42.3.5' } pluginExtensions { @@ -296,7 +287,7 @@ jib { } } -tasks.jibDockerBuild.dependsOn = ["bootJar"] +tasks.jibDockerBuild.dependsOn(bootJar) // Configuration for git properties gradle plugin // https://github.com/n0mer/gradle-git-properties @@ -310,9 +301,11 @@ gitProperties { // make sure the generateGitProperties task always executes (even when git.properties is not changed) generateGitProperties.outputs.upToDateWhen { false } -// Gradle 7.x asks for explicit dependencies between tasks +// NOTE: Gradle suggested these dependencies +jar.dependsOn resolve +test.dependsOn resolve checkstyleMain.dependsOn resolve checkstyleTest.dependsOn resolve -licenseMain.dependsOn processResources, generateGitProperties spotbugsTest.dependsOn resolve -test.dependsOn resolve +compileTestJava.dependsOn ':fineract-client:processResources' +bootJarMainClassName.dependsOn resolve diff --git a/fineract-war/build.gradle b/fineract-war/build.gradle index 0e560020d..aca955e22 100644 --- a/fineract-war/build.gradle +++ b/fineract-war/build.gradle @@ -20,6 +20,7 @@ description = 'Fineract WAR' apply plugin: 'war' apply plugin: 'distribution' +apply from: "${rootDir}/buildSrc/src/main/groovy/org.apache.fineract.dependencies.gradle" war { archiveFileName = 'fineract-provider.war' @@ -102,7 +103,7 @@ distributions { } } -tasks.binaryDistZip.enabled false -tasks.srcDistZip.enabled false -tasks.binaryDistTar.dependsOn = [war, ':fineract-doc:doc'] -// tasks.srcDistTar.dependsOn prepareInputYaml +binaryDistZip.enabled false +srcDistZip.enabled false +// NOTE: Gradle suggested these dependencies +binaryDistTar.dependsOn(war, ':fineract-client:jar', ':fineract-provider:build', ':fineract-doc:doc') diff --git a/gradle.properties b/gradle.properties index 89f430e5c..0da3f472a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -19,3 +19,4 @@ org.gradle.jvmargs=-Xmx2g --add-exports jdk.compiler/com.sun.tools.javac.api=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.file=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.parser=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.tree=ALL-UNNAMED --add-exports jdk.compiler/com.sun.tools.javac.util=ALL-UNNAMED --add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED --add-opens=java.base/java.lang=ALL-UNNAMED --add-opens=java.base/java.lang.invoke=ALL-UNNAMED --add-opens=java.base/java.io=ALL-UNNAMED --add-opens=java.base/java.security=ALL-UNNAMED --add-opens=java.base/java.util=ALL-UNNAMED --add-opens=java.management/javax.management=ALL-UNNAMED --add-opens=java.naming/javax.naming=ALL-UNNAMED --add-opens=java.rmi/sun.rmi.transport=null buildType=BUILD org.gradle.caching=true +org.gradle.parallel=true diff --git a/integration-tests/build.gradle b/integration-tests/build.gradle index f8dfafe3a..fdc79a14a 100644 --- a/integration-tests/build.gradle +++ b/integration-tests/build.gradle @@ -76,8 +76,10 @@ cargoStartLocal.dependsOn ':fineract-war:war' cargoStartLocal.mustRunAfter 'testClasses' test { - dependsOn cargoStartLocal + dependsOn (cargoStartLocal) finalizedBy cargoStopLocal } -compileTestJava.dependsOn ':fineract-client:processResources' +// NOTE: Gradle suggested these dependencies +compileTestJava.dependsOn(':fineract-provider:generateGitProperties', ':fineract-provider:processResources', ':fineract-provider:resolve') +spotbugsTest.dependsOn(':fineract-provider:generateGitProperties', ':fineract-provider:processResources', ':fineract-provider:resolve') diff --git a/oauth2-tests/build.gradle b/oauth2-tests/build.gradle index eebd32dd1..20220e460 100644 --- a/oauth2-tests/build.gradle +++ b/oauth2-tests/build.gradle @@ -73,6 +73,10 @@ cargoStartLocal.dependsOn ':fineract-war:war' cargoStartLocal.mustRunAfter 'testClasses' test { - dependsOn cargoStartLocal + dependsOn (cargoStartLocal) finalizedBy cargoStopLocal } + +// NOTE: Gradle suggested these dependencies +compileTestJava.dependsOn(':fineract-provider:generateGitProperties', ':fineract-provider:processResources', ':fineract-provider:resolve') +spotbugsTest.dependsOn(':fineract-provider:generateGitProperties', ':fineract-provider:processResources', ':fineract-provider:resolve') diff --git a/twofactor-tests/build.gradle b/twofactor-tests/build.gradle index 272fa0f32..464d73c22 100644 --- a/twofactor-tests/build.gradle +++ b/twofactor-tests/build.gradle @@ -73,6 +73,10 @@ cargoStartLocal.dependsOn ':fineract-war:war' cargoStartLocal.mustRunAfter 'testClasses' test { - dependsOn cargoStartLocal + dependsOn (cargoStartLocal) finalizedBy cargoStopLocal } + +// NOTE: Gradle suggested these dependencies +compileTestJava.dependsOn(':fineract-provider:generateGitProperties', ':fineract-provider:processResources', ':fineract-provider:resolve') +spotbugsTest.dependsOn(':fineract-provider:generateGitProperties', ':fineract-provider:processResources', ':fineract-provider:resolve')