This is an automated email from the ASF dual-hosted git repository.

arnold pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git

commit a76c189a045082796f24954f350c773dc170583d
Author: Arnold Galovics <[email protected]>
AuthorDate: Fri Jun 20 13:48:43 2025 +0200

    Revert "FINERACT-2181: Some tweaks in the gradle build to ensure correct 
task processing"
    
    This reverts commit 6cb60f48
---
 build.gradle                                       | 100 ++++++++--------
 fineract-accounting/build.gradle                   |  50 ++++----
 .../module/accounting/module-changelog-master.xml  |   0
 .../{META-INF => jpa/accounting}/persistence.xml   |   0
 fineract-avro-schemas/build.gradle                 |  16 +--
 fineract-branch/build.gradle                       |  50 ++++----
 .../{META-INF => jpa/branch}/persistence.xml       |   0
 fineract-charge/build.gradle                       |  50 ++++----
 .../module/charge/module-changelog-master.xml      |   0
 .../{META-INF => jpa/charge}/persistence.xml       |   0
 fineract-client/build.gradle                       |  64 +++++-----
 fineract-command/build.gradle                      |   2 +-
 fineract-core/build.gradle                         |  44 +++----
 .../{META-INF => jpa/core}/persistence.xml         |   0
 fineract-doc/build.gradle                          |   6 +-
 fineract-document/build.gradle                     |  46 +++----
 .../{META-INF => jpa/document}/persistence.xml     |   0
 fineract-investor/build.gradle                     |  50 ++++----
 .../{META-INF => jpa/investor}/persistence.xml     |   0
 fineract-loan/build.gradle                         |  53 +++------
 .../{META-INF => jpa/loan}/persistence.xml         |   0
 fineract-progressive-loan/build.gradle             |  50 ++++----
 .../progressiveloan}/persistence.xml               |   0
 fineract-provider/build.gradle                     | 132 ++++++++++-----------
 .../src/main/resources/application.properties      |   2 +-
 .../resources/{META-INF => jpa}/persistence.xml    |   0
 fineract-rates/build.gradle                        |  50 ++++----
 .../module/rates/module-changelog-master.xml       |   0
 .../{META-INF => jpa/rates}/persistence.xml        |   0
 fineract-report/build.gradle                       |  50 ++++----
 .../{META-INF => jpa/report}/persistence.xml       |   0
 fineract-savings/build.gradle                      |  50 ++++----
 .../{META-INF => jpa/savings}/persistence.xml      |   0
 fineract-tax/build.gradle                          |  50 ++++----
 .../{META-INF => jpa/taxes}/persistence.xml        |   0
 fineract-war/build.gradle                          |   6 +-
 36 files changed, 396 insertions(+), 525 deletions(-)

diff --git a/build.gradle b/build.gradle
index 5b6371319a..077ad067f9 100644
--- a/build.gradle
+++ b/build.gradle
@@ -365,12 +365,12 @@ configure(project.fineractJavaProjects) {
         withJavadocJar()
     }
 
-    tasks.withType(ProcessResources).configureEach {
+    tasks.withType(ProcessResources) {
         destinationDir = 
layout.buildDirectory.dir('classes/java/main').get().asFile
     }
 
     // Add performance optimizations
-    configurations.configureEach {
+    configurations.all {
         resolutionStrategy {
             cacheChangingModulesFor 0, 'seconds'
             cacheDynamicVersionsFor 0, 'seconds'
@@ -422,40 +422,40 @@ configure(project.fineractJavaProjects) {
     configurations {
         api.setCanBeResolved(true)
     }
-    tasks.withType(Copy).configureEach {
+    tasks.withType(Copy) {
         duplicatesStrategy = DuplicatesStrategy.EXCLUDE
     }
-    tasks.withType(JavaCompile).configureEach {
+    tasks.withType(JavaCompile) {
         options.compilerArgs += [
-                "-Xlint:cast",
-                "-Xlint:auxiliaryclass",
-                "-Xlint:dep-ann",
-                "-Xlint:divzero",
-                "-Xlint:empty",
-                "-Xlint:exports",
-                "-Xlint:fallthrough",
-                "-Xlint:finally",
-                "-Xlint:module",
-                "-Xlint:opens",
-                "-Xlint:options",
-                "-Xlint:overloads",
-                "-Xlint:overrides",
-                "-Xlint:path",
-                "-Xlint:processing",
-                "-Xlint:removal",
-                "-Xlint:requires-automatic",
-                "-Xlint:requires-transitive-automatic",
-                "-Xlint:try",
-                "-Xlint:varargs",
-                "-Xlint:preview",
-                "-Xlint:static",
-                // -Werror needs to be disabled because EclipseLink's static 
weaving doesn't generate warning-free code
-                // and during an IntelliJ recompilation, it fails
-                //"-Werror",
-                "-Xmaxwarns",
-                "1500",
-                "-Xmaxerrs",
-                "1500"
+            "-Xlint:cast",
+            "-Xlint:auxiliaryclass",
+            "-Xlint:dep-ann",
+            "-Xlint:divzero",
+            "-Xlint:empty",
+            "-Xlint:exports",
+            "-Xlint:fallthrough",
+            "-Xlint:finally",
+            "-Xlint:module",
+            "-Xlint:opens",
+            "-Xlint:options",
+            "-Xlint:overloads",
+            "-Xlint:overrides",
+            "-Xlint:path",
+            "-Xlint:processing",
+            "-Xlint:removal",
+            "-Xlint:requires-automatic",
+            "-Xlint:requires-transitive-automatic",
+            "-Xlint:try",
+            "-Xlint:varargs",
+            "-Xlint:preview",
+            "-Xlint:static",
+            // -Werror needs to be disabled because EclipseLink's static 
weaving doesn't generate warning-free code
+            // and during an IntelliJ recompilation, it fails
+            //"-Werror",
+            "-Xmaxwarns",
+            "1500",
+            "-Xmaxerrs",
+            "1500"
         ]
         // TODO FINERACT-959 (gradually) enable -Xlint:all (see "javac -help 
-X")
 
@@ -738,13 +738,11 @@ configure(project.fineractJavaProjects) {
         ]
     }
 
-    tasks.withType(Javadoc).tap {
-        configureEach {
-            options.addStringOption('Xdoclint:none', '-quiet')
-            options.encoding = 'UTF-8'
-            // Ignore any errors during javadoc generation
-            failOnError = false
-        }
+    tasks.withType(Javadoc) {
+        options.addStringOption('Xdoclint:none', '-quiet')
+        options.encoding = 'UTF-8'
+        // Ignore any errors during javadoc generation
+        failOnError = false
     }
 }
 
@@ -870,17 +868,17 @@ configure(project.fineractPublishProjects) {
     }
 }
 
-    tasks.register('printSourceSetInformation') {
-        doLast {
-            sourceSets.each { srcSet ->
-                println "[" + srcSet.name + "]"
-                print "-->Source directories: " + srcSet.allJava.srcDirs + "\n"
-                print "-->Output directories: " + 
srcSet.output.classesDirs.files + "\n"
-                print "-->Compile classpath:\n"
-                srcSet.compileClasspath.files.each {
-                    print "  " + it.path + "\n"
-                }
-                println ""
+task printSourceSetInformation() {
+    doLast{
+        sourceSets.each { srcSet ->
+            println "["+srcSet.name+"]"
+            print "-->Source directories: "+srcSet.allJava.srcDirs+"\n"
+            print "-->Output directories: 
"+srcSet.output.classesDirs.files+"\n"
+            print "-->Compile classpath:\n"
+            srcSet.compileClasspath.files.each {
+                print "  "+it.path+"\n"
             }
+            println ""
         }
     }
+}
diff --git a/fineract-accounting/build.gradle b/fineract-accounting/build.gradle
index ceb6895f85..916069b1f9 100644
--- a/fineract-accounting/build.gradle
+++ b/fineract-accounting/build.gradle
@@ -21,35 +21,23 @@ description = 'Fineract Accounting'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/accounting/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        mainClass = 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 configurations {
@@ -97,6 +85,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
diff --git 
a/fineract-accounting/src/main/resources/db/changelog/tenant/module/accounting/module-changelog-master.xml
 
b/fineract-accounting/src/main/resources/jpa/accounting/db/changelog/tenant/module/accounting/module-changelog-master.xml
similarity index 100%
rename from 
fineract-accounting/src/main/resources/db/changelog/tenant/module/accounting/module-changelog-master.xml
rename to 
fineract-accounting/src/main/resources/jpa/accounting/db/changelog/tenant/module/accounting/module-changelog-master.xml
diff --git a/fineract-accounting/src/main/resources/META-INF/persistence.xml 
b/fineract-accounting/src/main/resources/jpa/accounting/persistence.xml
similarity index 100%
rename from fineract-accounting/src/main/resources/META-INF/persistence.xml
rename to fineract-accounting/src/main/resources/jpa/accounting/persistence.xml
diff --git a/fineract-avro-schemas/build.gradle 
b/fineract-avro-schemas/build.gradle
index e94a01d940..5afaaec48e 100644
--- a/fineract-avro-schemas/build.gradle
+++ b/fineract-avro-schemas/build.gradle
@@ -57,11 +57,9 @@ tasks.register('preprocessAvroSchemas', 
PreprocessAvroSchemasTask) {
     inputDir = file("$projectDir/src/main/avro")
     bigDecimalTemplate = 
file("$projectDir/src/main/resources/avro-templates/bigdecimal.avsc")
     outputDir = file("$buildDir/generated/avro/src/main/avro")
-    finalizedBy buildJavaSdk
 }
 
-tasks.register('buildJavaSdk', GenerateAvroJavaTask) {
-    dependsOn preprocessAvroSchemas, spotlessJsonApply
+task buildJavaSdk(type: GenerateAvroJavaTask) {
     source("$buildDir/generated/avro/src/main/avro")
     outputDir = file("$buildDir/generated/java/src/main/java")
     templateDirectory = 
"$projectDir/src/main/resources/avro-generator-templates/"
@@ -75,10 +73,12 @@ spotless {
     }
 }
 
+buildJavaSdk.dependsOn(preprocessAvroSchemas, spotlessJsonApply)
+
 sourceSets {
     main {
         java {
-            srcDirs += "$buildDir/generated/java/src/main/java"
+            srcDir file("$buildDir/generated/java/src/main/java")
         }
         resources {
             srcDir file("$projectDir/src/main/resources")
@@ -97,7 +97,7 @@ jar {
 }
 
 compileJava {
-    dependsOn buildJavaSdk, processResources
+    dependsOn buildJavaSdk
     source = sourceSets.main.java.srcDirs
     options.compilerArgs += ['-parameters']
 }
@@ -131,9 +131,3 @@ tasks.named('sourcesJar') {
     dependsOn tasks.named('buildJavaSdk')
     duplicatesStrategy = DuplicatesStrategy.EXCLUDE
 }
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
diff --git a/fineract-branch/build.gradle b/fineract-branch/build.gradle
index 505273c140..04a3b10e4e 100644
--- a/fineract-branch/build.gradle
+++ b/fineract-branch/build.gradle
@@ -21,35 +21,23 @@ description = 'Fineract Branch'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/branch/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 // Configuration for Swagger documentation generation task
@@ -103,6 +91,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
diff --git a/fineract-branch/src/main/resources/META-INF/persistence.xml 
b/fineract-branch/src/main/resources/jpa/branch/persistence.xml
similarity index 100%
rename from fineract-branch/src/main/resources/META-INF/persistence.xml
rename to fineract-branch/src/main/resources/jpa/branch/persistence.xml
diff --git a/fineract-charge/build.gradle b/fineract-charge/build.gradle
index 58b90df787..636fc048af 100644
--- a/fineract-charge/build.gradle
+++ b/fineract-charge/build.gradle
@@ -21,35 +21,23 @@ description = 'Fineract Charge'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/charge/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 // Configuration for Swagger documentation generation task
@@ -103,6 +91,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
diff --git 
a/fineract-charge/src/main/resources/db/changelog/tenant/module/charge/module-changelog-master.xml
 
b/fineract-charge/src/main/resources/jpa/charge/db/changelog/tenant/module/charge/module-changelog-master.xml
similarity index 100%
rename from 
fineract-charge/src/main/resources/db/changelog/tenant/module/charge/module-changelog-master.xml
rename to 
fineract-charge/src/main/resources/jpa/charge/db/changelog/tenant/module/charge/module-changelog-master.xml
diff --git a/fineract-charge/src/main/resources/META-INF/persistence.xml 
b/fineract-charge/src/main/resources/jpa/charge/persistence.xml
similarity index 100%
rename from fineract-charge/src/main/resources/META-INF/persistence.xml
rename to fineract-charge/src/main/resources/jpa/charge/persistence.xml
diff --git a/fineract-client/build.gradle b/fineract-client/build.gradle
index 133ad53344..a079f0a086 100644
--- a/fineract-client/build.gradle
+++ b/fineract-client/build.gradle
@@ -1,5 +1,3 @@
-import org.openapitools.generator.gradle.plugin.tasks.GenerateTask
-
 /**
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements. See the NOTICE file
@@ -37,7 +35,7 @@ openApiValidate {
     recommend = true
 }
 
-tasks.register('buildJavaSdk', GenerateTask) {
+task buildJavaSdk(type: 
org.openapitools.generator.gradle.plugin.tasks.GenerateTask) {
     generatorName = 'java'
     verbose = false
     validateSpec = false
@@ -50,11 +48,11 @@ tasks.register('buildJavaSdk', GenerateTask) {
     invokerPackage = 'org.apache.fineract.client'
     modelPackage = 'org.apache.fineract.client.models'
     configOptions = [
-            dateLibrary            : 'java8',
-            useRxJava2             : 'false',
-            library                : 'retrofit2',
-            hideGenerationTimestamp: 'true',
-            containerDefaultToNull : 'true'
+        dateLibrary: 'java8',
+        useRxJava2: 'false',
+        library: 'retrofit2',
+        hideGenerationTimestamp: 'true',
+        containerDefaultToNull: 'true'
     ]
     generateModelTests = false
     generateApiTests = false
@@ -62,7 +60,7 @@ tasks.register('buildJavaSdk', GenerateTask) {
     dependsOn(':fineract-provider:resolve')
 }
 
-tasks.register('buildTypescriptAngularSdk', GenerateTask) {
+task buildTypescriptAngularSdk(type: 
org.openapitools.generator.gradle.plugin.tasks.GenerateTask){
     generatorName = 'typescript-angular'
     verbose = false
     validateSpec = false
@@ -73,16 +71,16 @@ tasks.register('buildTypescriptAngularSdk', GenerateTask) {
     invokerPackage = 'apache-fineract-client/invoker'
     modelPackage = 'apache-fineract-client/models'
     configOptions = [
-            apiModulePrefix    : 'apacheFineractClient',
-            configurationPrefix: 'apacheFineractClient',
-            ngVersion          : '12.0.0',
-            npmName            : '@apache/fineract-client',
-            npmRepository      : "${npmRepository}"
+        apiModulePrefix: 'apacheFineractClient',
+        configurationPrefix: 'apacheFineractClient',
+        ngVersion: '12.0.0',
+        npmName: '@apache/fineract-client',
+        npmRepository: "${npmRepository}"
     ]
     dependsOn(':fineract-provider:resolve')
 }
 
-tasks.register('buildAsciidoc', GenerateTask) {
+task buildAsciidoc(type: 
org.openapitools.generator.gradle.plugin.tasks.GenerateTask){
     generatorName = 'asciidoc'
     verbose = false
     validateSpec = false
@@ -93,18 +91,18 @@ tasks.register('buildAsciidoc', GenerateTask) {
     invokerPackage = 'org.apache.fineract.client'
     modelPackage = 'org.apache.fineract.client.models'
     configOptions = [
-            appName         : 'Apache Fineract REST API',
-            appDescription  : '''Apache Fineract is a secure, multi-tenanted 
microfinance platform.
+        appName: 'Apache Fineract REST API',
+        appDescription: '''Apache Fineract is a secure, multi-tenanted 
microfinance platform.
             The goal of the Apache Fineract API is to empower developers to 
build apps on top of the Apache Fineract Platform.
-            The [reference app](https://cui.fineract.dev) (username: mifos, 
password: password) works on the same demo tenant as the interactive links in 
this documentation.
-            Until we complete the new REST API documentation you still have 
the legacy documentation available 
[here](https://fineract.apache.org/docs/legacy/).
-            Please check [the Fineract 
documentation](https://fineract.apache.org/docs/current/) for more 
information.''',
-            headerAttributes: 'false',
-            infoEmail       : '[email protected]',
-            infoUrl         : 'https://fineract.apache.org',
-            licenseInfo     : 'Apache 2.0',
-            licenseUrl      : 
'http://www.apache.org/licenses/LICENSE-2.0.html',
-            useMethodAndPath: 'true'
+            The https://cui.fineract.dev[reference app] (username: mifos, 
password: password) works on the same demo tenant as the interactive links in 
this documentation.
+            Until we complete the new REST API documentation you still have 
the legacy documentation available 
https://fineract.apache.org/legacy-docs/apiLive.htm[here].
+            Please check https://fineract.apache.org/docs/current[the Fineract 
documentation] for more information.''',
+        headerAttributes: 'false',
+        infoEmail: '[email protected]',
+        infoUrl: 'https://fineract.apache.org',
+        licenseInfo: 'Apache 2.0',
+        licenseUrl: 'http://www.apache.org/licenses/LICENSE-2.0.html',
+        useMethodAndPath: 'true'
     ]
     dependsOn(':fineract-provider:resolve')
 }
@@ -133,23 +131,23 @@ tasks.withType(Jar).configureEach {
 }
 
 // Improve the cleanup task to track inputs and outputs
-tasks.register('cleanupGeneratedJavaFiles') {
+task cleanupGeneratedJavaFiles() {
     def tempDir = file("$buildDir/generated/temp-java")
     def targetDir = file("$buildDir/generated/java")
-
+    
     inputs.dir(tempDir)
     outputs.dir(targetDir)
-
+    
     doLast {
         copy {
             from tempDir
             into targetDir
             filter { line ->
                 line
-                        .replaceAll("import org\\.joda\\.time\\.\\*;", "")
-                        .replaceAll(", \\)", ")")
-                        .replaceAll(", , @HeaderMap", ", @HeaderMap")
-                        .replaceAll("\\(, ", "(")
+                    .replaceAll("import org\\.joda\\.time\\.\\*;", "")
+                    .replaceAll(", \\)", ")")
+                    .replaceAll(", , @HeaderMap", ", @HeaderMap")
+                    .replaceAll("\\(, ", "(")
             }
             // Also set duplicates strategy for the copy task
             duplicatesStrategy = DuplicatesStrategy.EXCLUDE
diff --git a/fineract-command/build.gradle b/fineract-command/build.gradle
index 023b5b6356..ac754bcab8 100644
--- a/fineract-command/build.gradle
+++ b/fineract-command/build.gradle
@@ -79,4 +79,4 @@ jmh {
     fork = 1 // Number of forks
     timeOnIteration = '2s' // Time per iteration
     benchmarkMode = ['thrpt'] // Default benchmark mode
-}
+}
\ No newline at end of file
diff --git a/fineract-core/build.gradle b/fineract-core/build.gradle
index 1d0a8dc66b..c05ff72886 100644
--- a/fineract-core/build.gradle
+++ b/fineract-core/build.gradle
@@ -21,31 +21,23 @@ description = 'Fineract Core'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes, processResources
-
-    def classesDir = file(sourceSets.main.output.classesDirs.asPath)
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir, classesDir, classesDir
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/core/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main = 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 configurations {
@@ -72,7 +64,7 @@ configurations {
 apply from: 'dependencies.gradle'
 
 compileJava {
-    dependsOn ':fineract-avro-schemas:compileJava', processResources
+    dependsOn ':fineract-avro-schemas:jar'
     options.compilerArgs += ['-parameters']
 }
 
diff --git a/fineract-core/src/main/resources/META-INF/persistence.xml 
b/fineract-core/src/main/resources/jpa/core/persistence.xml
similarity index 100%
rename from fineract-core/src/main/resources/META-INF/persistence.xml
rename to fineract-core/src/main/resources/jpa/core/persistence.xml
diff --git a/fineract-doc/build.gradle b/fineract-doc/build.gradle
index eaa9a202db..67ce8887d9 100644
--- a/fineract-doc/build.gradle
+++ b/fineract-doc/build.gradle
@@ -60,12 +60,12 @@ asciidoctor {
     dependsOn(':fineract-client:clean', ':fineract-client:buildAsciidoc')
 }
 
-tasks.register('copyImages', Copy) {
+task copyImages(type: Copy) {
     from "${projectDir}/src/docs/en/images"
     into "${buildDir}/generated/images"
 }
 
-tasks.register('copyDiagrams', Copy) {
+task copyDiagrams(type: Copy) {
     from "${projectDir}/src/docs/en/diagrams"
     into "${buildDir}/generated/diagrams"
 }
@@ -95,7 +95,7 @@ asciidoctorPdf {
     dependsOn(':fineract-client:clean', ':fineract-client:buildAsciidoc')
 }
 
-tasks.register('doc', Zip) {
+task doc(type: Zip) {
     dependsOn(asciidoctor, asciidoctorPdf)
 
     into("fineract-${project.version}/html") {
diff --git a/fineract-document/build.gradle b/fineract-document/build.gradle
index 8410fbff31..6eeb13ada5 100644
--- a/fineract-document/build.gradle
+++ b/fineract-document/build.gradle
@@ -21,35 +21,23 @@ description = 'Fineract Document'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/document/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, '-classpath', 
sourceSets.main.runtimeClasspath, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 configurations {
diff --git a/fineract-document/src/main/resources/META-INF/persistence.xml 
b/fineract-document/src/main/resources/jpa/document/persistence.xml
similarity index 100%
rename from fineract-document/src/main/resources/META-INF/persistence.xml
rename to fineract-document/src/main/resources/jpa/document/persistence.xml
diff --git a/fineract-investor/build.gradle b/fineract-investor/build.gradle
index 5fdbf51e31..22187772f0 100644
--- a/fineract-investor/build.gradle
+++ b/fineract-investor/build.gradle
@@ -21,35 +21,23 @@ description = 'Fineract Investor'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/investor/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 configurations {
@@ -97,6 +85,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
diff --git a/fineract-investor/src/main/resources/META-INF/persistence.xml 
b/fineract-investor/src/main/resources/jpa/investor/persistence.xml
similarity index 100%
rename from fineract-investor/src/main/resources/META-INF/persistence.xml
rename to fineract-investor/src/main/resources/jpa/investor/persistence.xml
diff --git a/fineract-loan/build.gradle b/fineract-loan/build.gradle
index 5d333cbadf..33b087fafd 100644
--- a/fineract-loan/build.gradle
+++ b/fineract-loan/build.gradle
@@ -21,36 +21,23 @@ description = 'Fineract Loan'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-    def metaInf = new File(classesDir, "META-INF")
-    metaInf.mkdirs()
-
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
     copy {
-        from "src/main/resources/jpa/loan/persistence.xml"
-        into "$buildDir/classes/java/main/META-INF"
+        from file("src/main/resources/jpa/loan/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
     }
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
 }
 
 // Configuration for Swagger documentation generation task
@@ -104,6 +91,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
@@ -113,9 +104,3 @@ if (!(project.hasProperty('env') && 
project.getProperty('env') == 'dev')) {
         }
     }
 }
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
diff --git a/fineract-loan/src/main/resources/META-INF/persistence.xml 
b/fineract-loan/src/main/resources/jpa/loan/persistence.xml
similarity index 100%
rename from fineract-loan/src/main/resources/META-INF/persistence.xml
rename to fineract-loan/src/main/resources/jpa/loan/persistence.xml
diff --git a/fineract-progressive-loan/build.gradle 
b/fineract-progressive-loan/build.gradle
index 9017f54b4f..20e9f20b4b 100644
--- a/fineract-progressive-loan/build.gradle
+++ b/fineract-progressive-loan/build.gradle
@@ -21,35 +21,23 @@ description = 'Fineract Progressive Loan'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/progressiveloan/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 configurations {
@@ -97,6 +85,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
diff --git 
a/fineract-progressive-loan/src/main/resources/META-INF/persistence.xml 
b/fineract-progressive-loan/src/main/resources/jpa/progressiveloan/persistence.xml
similarity index 100%
rename from 
fineract-progressive-loan/src/main/resources/META-INF/persistence.xml
rename to 
fineract-progressive-loan/src/main/resources/jpa/progressiveloan/persistence.xml
diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle
index 8c7bfe5360..9606ce545b 100644
--- a/fineract-provider/build.gradle
+++ b/fineract-provider/build.gradle
@@ -30,46 +30,30 @@ apply plugin: 'se.thinkcode.cucumber-runner'
 
 check.dependsOn('cucumber')
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-tasks.named('staticWeaveJpa') {
-    mustRunAfter tasks.named('resolve')
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 // Configuration for Swagger documentation generation task
 // 
https://github.com/swagger-api/swagger-core/tree/master/modules/swagger-gradle-plugin
 import org.apache.tools.ant.filters.ReplaceTokens
 
-tasks.register('prepareInputYaml') {
+task prepareInputYaml {
     outputs.file("${buildDir}/tmp/swagger/fineract-input.yaml")
 
     doLast {
@@ -155,6 +139,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
@@ -188,57 +176,57 @@ configurations.driver.each {File file ->
     loader.addURL(file.toURL())
 }
 
-tasks.register('createDB') {
-    description = "Creates the MariaDB Database. Needs database name to be 
passed (like: -PdbName=someDBname)"
+task createDB {
+    description= "Creates the MariaDB Database. Needs database name to be 
passed (like: -PdbName=someDBname)"
     doLast {
-        def sql = Sql.newInstance('jdbc:mariadb://localhost:3306/', mysqlUser, 
mysqlPassword, 'org.mariadb.jdbc.Driver')
-        sql.execute('CREATE DATABASE ' + "`$dbName` CHARACTER SET utf8mb4")
+        def sql = Sql.newInstance( 'jdbc:mariadb://localhost:3306/', 
mysqlUser, mysqlPassword, 'org.mariadb.jdbc.Driver' )
+        sql.execute( 'CREATE DATABASE '+"`$dbName` CHARACTER SET utf8mb4" )
     }
 }
 
-tasks.register('dropDB') {
-    description = "Drops the specified MariaDB database. The database name has 
to be passed (like: -PdbName=someDBname)"
+task dropDB {
+    description= "Drops the specified MariaDB database. The database name has 
to be passed (like: -PdbName=someDBname)"
     doLast {
-        def sql = Sql.newInstance('jdbc:mariadb://localhost:3306/', mysqlUser, 
mysqlPassword, 'org.mariadb.jdbc.Driver')
-        sql.execute('DROP DATABASE ' + "`$dbName`")
+        def sql = Sql.newInstance( 'jdbc:mariadb://localhost:3306/', 
mysqlUser, mysqlPassword, 'org.mariadb.jdbc.Driver' )
+        sql.execute( 'DROP DATABASE '+"`$dbName`")
     }
 }
 
-tasks.register('createPGDB') {
-    description = "Creates the PostgreSQL Database. Needs database name to be 
passed (like: -PdbName=someDBname)"
+task createPGDB {
+    description= "Creates the PostgreSQL Database. Needs database name to be 
passed (like: -PdbName=someDBname)"
     doLast {
-        def sql = Sql.newInstance('jdbc:postgresql://localhost:5432/', pgUser, 
pgPassword, 'org.postgresql.Driver')
-        sql.execute('create database ' + "$dbName")
+        def sql = Sql.newInstance( 'jdbc:postgresql://localhost:5432/', 
pgUser, pgPassword, 'org.postgresql.Driver' )
+        sql.execute( 'create database '+"$dbName" )
     }
 }
 
-tasks.register('dropPGDB') {
-    description = "Drops the specified PostgreSQL database. The database name 
has to be passed (like: -PdbName=someDBname)"
+task dropPGDB {
+    description= "Drops the specified PostgreSQL database. The database name 
has to be passed (like: -PdbName=someDBname)"
     doLast {
-        def sql = Sql.newInstance('jdbc:postgresql://localhost:5432/', pgUser, 
pgPassword, 'org.postgresql.Driver')
-        sql.execute('DROP DATABASE ' + "$dbName")
+        def sql = Sql.newInstance( 'jdbc:postgresql://localhost:5432/', 
pgUser, pgPassword, 'org.postgresql.Driver' )
+        sql.execute( 'DROP DATABASE '+ "$dbName")
     }
 }
 
-tasks.register('createMySQLDB') {
-    description = "Creates the MySQL Database. Needs database name to be 
passed (like: -PdbName=someDBname)"
+task createMySQLDB {
+    description= "Creates the MySQL Database. Needs database name to be passed 
(like: -PdbName=someDBname)"
     doLast {
-        def sql = Sql.newInstance('jdbc:mysql://localhost:3306/', mysqlUser, 
mysqlPassword, 'com.mysql.cj.jdbc.Driver')
-        sql.execute('CREATE DATABASE ' + "`$dbName` CHARACTER SET utf8mb4")
+        def sql = Sql.newInstance( 'jdbc:mysql://localhost:3306/', mysqlUser, 
mysqlPassword, 'com.mysql.cj.jdbc.Driver' )
+        sql.execute( 'CREATE DATABASE '+"`$dbName` CHARACTER SET utf8mb4" )
     }
 }
 
-tasks.register('dropMySQLDB') {
-    description = "Drops the specified MySQL database. The database name has 
to be passed (like: -PdbName=someDBname)"
+task dropMySQLDB {
+    description= "Drops the specified MySQL database. The database name has to 
be passed (like: -PdbName=someDBname)"
     doLast {
-        def sql = Sql.newInstance('jdbc:mysql://localhost:3306/', mysqlUser, 
mysqlPassword, 'com.mysql.cj.jdbc.Driver')
-        sql.execute('DROP DATABASE ' + "`$dbName`")
+        def sql = Sql.newInstance( 'jdbc:mysql://localhost:3306/', mysqlUser, 
mysqlPassword, 'com.mysql.cj.jdbc.Driver' )
+        sql.execute( 'DROP DATABASE '+"`$dbName`")
     }
 }
 
-tasks.register('setBlankPassword') {
+task setBlankPassword {
     doLast {
-        def sql = Sql.newInstance('jdbc:mariadb://localhost:3306/', mysqlUser, 
mysqlPassword, 'org.mariadb.jdbc.Driver')
+        def sql = Sql.newInstance( 'jdbc:mariadb://localhost:3306/', 
mysqlUser, mysqlPassword, 'org.mariadb.jdbc.Driver' )
         sql.execute('USE `fineract_tenants`')
         sql.execute('UPDATE fineract_tenants.tenants SET schema_server = 
\'localhost\', schema_server_port = \'3306\', schema_username = \'mifos\', 
schema_password = \'mysql\' WHERE id=1;')
     }
@@ -323,12 +311,12 @@ jib {
     }
 }
 
-tasks.register('migrateDatabase') {
+task migrateDatabase {
     doFirst {
-        println 'Executing liquibase database migration to version ' + 
"$dbVersion"
+        println 'Executing liquibase database migration to version 
'+"$dbVersion"
 
-        def dbUrl = 'jdbc:' + "$dbType" + '://' + "$dbHost" + ':' + "$dbPort" 
+ '/' + "$dbName"
-        def changeLogFilePath = 
'fineract-provider/src/main/resources/db/changelog/tenant/upgrades/0000_upgrade_to_'
 + "$dbVersion" + '.xml'
+        def dbUrl='jdbc:'+"$dbType"+'://'+"$dbHost"+':'+"$dbPort"+'/'+"$dbName"
+        def 
changeLogFilePath='fineract-provider/src/main/resources/db/changelog/tenant/upgrades/0000_upgrade_to_'+"$dbVersion"+'.xml'
 
         liquibase {
             activities {
@@ -384,20 +372,20 @@ javadoc {
     dependsOn resolve
 }
 
-tasks.register('devRun', org.springframework.boot.gradle.tasks.run.BootRun) {
+task devRun(type: org.springframework.boot.gradle.tasks.run.BootRun) {
     description = 'Runs the application quickly for development by skipping 
quality checks'
     group = 'Application'
 
     // Configure the build to skip quality checks
     gradle.taskGraph.whenReady { graph ->
         if (graph.hasTask(devRun)) {
-            tasks.matching { task ->
+            tasks.matching { task -> 
                 task.name in ['checkstyle', 'checkstyleMain', 'checkstyleTest',
-                              'spotlessCheck', 'spotlessApply',
-                              'spotbugsMain', 'spotbugsTest',
-                              'javadoc', 'javadocJar',
-                              'modernizer',
-                              'testClasses']
+                            'spotlessCheck', 'spotlessApply',
+                            'spotbugsMain', 'spotbugsTest',
+                            'javadoc', 'javadocJar',
+                            'modernizer',
+                            'testClasses']
             }.configureEach {
                 enabled = false
             }
@@ -412,7 +400,7 @@ tasks.register('devRun', 
org.springframework.boot.gradle.tasks.run.BootRun) {
     classpath = bootRun.classpath
     mainClass = bootRun.mainClass
     jvmArgs = bootRun.jvmArgs
-
+    
     doFirst {
         println "Running in development mode - quality checks are disabled"
     }
diff --git a/fineract-provider/src/main/resources/application.properties 
b/fineract-provider/src/main/resources/application.properties
index a26a80d282..33642742e4 100644
--- a/fineract-provider/src/main/resources/application.properties
+++ b/fineract-provider/src/main/resources/application.properties
@@ -434,7 +434,7 @@ springdoc.pathsToMatch=/api/**
 springdoc.use-management-port=${SPRINGDOC_USE_MANAGEMENT_PORT:false}
 springdoc.show-actuator=${SPRINGDOC_SHOW_ACTUATOR:false}
 
-spring.web.resources.static-locations=classpath:/static/, /swagger/
+spring.web.resources.static-locations=classpath:/static/
 
 spring.main.allow-bean-definition-overriding=true
 spring.task.scheduling.pool.size=4
diff --git a/fineract-provider/src/main/resources/META-INF/persistence.xml 
b/fineract-provider/src/main/resources/jpa/persistence.xml
similarity index 100%
rename from fineract-provider/src/main/resources/META-INF/persistence.xml
rename to fineract-provider/src/main/resources/jpa/persistence.xml
diff --git a/fineract-rates/build.gradle b/fineract-rates/build.gradle
index 36e88f449e..279cd9d991 100644
--- a/fineract-rates/build.gradle
+++ b/fineract-rates/build.gradle
@@ -21,35 +21,23 @@ description = 'Fineract Rates'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/rates/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 // Configuration for Swagger documentation generation task
@@ -103,6 +91,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
diff --git 
a/fineract-rates/src/main/resources/db/changelog/tenant/module/rates/module-changelog-master.xml
 
b/fineract-rates/src/main/resources/jpa/rates/db/changelog/tenant/module/rates/module-changelog-master.xml
similarity index 100%
rename from 
fineract-rates/src/main/resources/db/changelog/tenant/module/rates/module-changelog-master.xml
rename to 
fineract-rates/src/main/resources/jpa/rates/db/changelog/tenant/module/rates/module-changelog-master.xml
diff --git a/fineract-rates/src/main/resources/META-INF/persistence.xml 
b/fineract-rates/src/main/resources/jpa/rates/persistence.xml
similarity index 100%
rename from fineract-rates/src/main/resources/META-INF/persistence.xml
rename to fineract-rates/src/main/resources/jpa/rates/persistence.xml
diff --git a/fineract-report/build.gradle b/fineract-report/build.gradle
index 16e958dfec..f7239ebd4b 100644
--- a/fineract-report/build.gradle
+++ b/fineract-report/build.gradle
@@ -21,35 +21,23 @@ description = 'Fineract Report'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/report/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 // Configuration for Swagger documentation generation task
@@ -103,6 +91,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
diff --git a/fineract-report/src/main/resources/META-INF/persistence.xml 
b/fineract-report/src/main/resources/jpa/report/persistence.xml
similarity index 100%
rename from fineract-report/src/main/resources/META-INF/persistence.xml
rename to fineract-report/src/main/resources/jpa/report/persistence.xml
diff --git a/fineract-savings/build.gradle b/fineract-savings/build.gradle
index 7e6b6eb975..df6fa6f3a7 100644
--- a/fineract-savings/build.gradle
+++ b/fineract-savings/build.gradle
@@ -21,35 +21,23 @@ description = 'Fineract Savings'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/savings/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 // Configuration for Swagger documentation generation task
@@ -103,6 +91,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
diff --git a/fineract-savings/src/main/resources/META-INF/persistence.xml 
b/fineract-savings/src/main/resources/jpa/savings/persistence.xml
similarity index 100%
rename from fineract-savings/src/main/resources/META-INF/persistence.xml
rename to fineract-savings/src/main/resources/jpa/savings/persistence.xml
diff --git a/fineract-tax/build.gradle b/fineract-tax/build.gradle
index a03a028871..1d0844df62 100644
--- a/fineract-tax/build.gradle
+++ b/fineract-tax/build.gradle
@@ -21,35 +21,23 @@ description = 'Fineract Taxes'
 apply plugin: 'java'
 apply plugin: 'eclipse'
 
-tasks.register('staticWeaveJpa', JavaExec) {
-    group = "build"
-    description = "Performs EclipseLink static weaving of entity classes"
-
-    dependsOn classes
-
-    def classesDir = file("$buildDir/classes/java/main")
-
-    mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
-    classpath = sourceSets.main.runtimeClasspath
-    args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, 
classesDir.absolutePath
-}
-
-staticWeaveJpa.doLast {
-    delete 
"${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
-}
-
-tasks.named('classes') {
-    finalizedBy staticWeaveJpa
-}
-
-tasks.named('processResources') {
-    from('src/main/resources')
-    into sourceSets.main.java.classesDirectory
-    outputs.upToDateWhen { false }
-}
-
-compileJava {
-    dependsOn ':fineract-avro-schemas:buildJavaSdk'
+compileJava.doLast {
+    def mainSS = sourceSets.main
+    def source = mainSS.java.classesDirectory.get()
+    copy {
+        from file("src/main/resources/jpa/taxes/persistence.xml")
+        into "${source}/META-INF/"
+    }
+    javaexec {
+        description = 'Performs EclipseLink static weaving of entity classes'
+        def target = source
+        main 'org.eclipse.persistence.tools.weaving.jpa.StaticWeave'
+        args '-persistenceinfo', source, source, target
+        classpath sourceSets.main.runtimeClasspath
+    }
+    delete {
+        delete "${source}/META-INF/persistence.xml"
+    }
 }
 
 // Configuration for Swagger documentation generation task
@@ -103,6 +91,10 @@ eclipse {
     }
 }
 
+/* 
http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle
 */
+sourceSets.main.output.resourcesDir = sourceSets.main.java.classesDirectory
+sourceSets.test.output.resourcesDir = sourceSets.test.java.classesDirectory
+
 if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
     sourceSets {
         test {
diff --git a/fineract-tax/src/main/resources/META-INF/persistence.xml 
b/fineract-tax/src/main/resources/jpa/taxes/persistence.xml
similarity index 100%
rename from fineract-tax/src/main/resources/META-INF/persistence.xml
rename to fineract-tax/src/main/resources/jpa/taxes/persistence.xml
diff --git a/fineract-war/build.gradle b/fineract-war/build.gradle
index 0f41b44f85..93b12e4226 100644
--- a/fineract-war/build.gradle
+++ b/fineract-war/build.gradle
@@ -91,13 +91,13 @@ dependencies {
     implementation project(':fineract-provider')
 }
 
-tasks.withType(Tar).configureEach {
+tasks.withType(Tar) {
     compression Compression.GZIP
     archiveExtension = 'tar.gz'
-
+    
     // Enable caching for all tar tasks
     outputs.cacheIf { true }
-
+    
     // Ensure reproducible output
     preserveFileTimestamps = false
     reproducibleFileOrder = true

Reply via email to