diff --git a/build.gradle b/build.gradle
index 5b6371319..d0e066515 100644
--- a/build.gradle
+++ b/build.gradle
@@ -365,10 +365,6 @@ configure(project.fineractJavaProjects) {
withJavadocJar()
}
- tasks.withType(ProcessResources).configureEach {
- destinationDir = layout.buildDirectory.dir('classes/java/main').get().asFile
- }
-
// Add performance optimizations
configurations.configureEach {
resolutionStrategy {
diff --git a/custom/docker/build.gradle b/custom/docker/build.gradle
index 2822fe537..66c91b399 100644
--- a/custom/docker/build.gradle
+++ b/custom/docker/build.gradle
@@ -58,7 +58,6 @@ jib {
allowInsecureRegistries = true
dependencies {
- implementation project(':fineract-core')
implementation project(':fineract-provider')
// NOTE: dynamically load all custom modules
file("${rootDir}/custom").eachDir { companyDir ->
diff --git a/fineract-accounting/build.gradle b/fineract-accounting/build.gradle
index ceb6895f8..eb91427a7 100644
--- a/fineract-accounting/build.gradle
+++ b/fineract-accounting/build.gradle
@@ -22,32 +22,48 @@ 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 classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/accounting/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
+
+
compileJava {
dependsOn ':fineract-avro-schemas:buildJavaSdk'
}
@@ -106,3 +122,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-accounting/src/main/resources/META-INF/persistence.xml b/fineract-accounting/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index 3e2aa1743..000000000
--- a/fineract-accounting/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,51 +0,0 @@
-
-
-
-
-
-
-
-
-
- org.eclipse.persistence.jpa.PersistenceProvider
-
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.tax.domain.TaxComponent
- org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
-
- org.apache.fineract.portfolio.charge.domain.Charge
- false
-
-
-
-
-
diff --git a/fineract-loan/src/main/resources/META-INF/persistence.xml b/fineract-accounting/src/main/resources/jpa/static-weaving/module/accounting/persistence.xml
similarity index 74%
rename from fineract-loan/src/main/resources/META-INF/persistence.xml
rename to fineract-accounting/src/main/resources/jpa/static-weaving/module/accounting/persistence.xml
index bb2388765..60e55ff84 100644
--- a/fineract-loan/src/main/resources/META-INF/persistence.xml
+++ b/fineract-accounting/src/main/resources/jpa/static-weaving/module/accounting/persistence.xml
@@ -22,56 +22,69 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
-
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.staff.domain.Staff
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.workingdays.domain.WorkingDays
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.group.domain.GroupRole
- org.apache.fineract.portfolio.client.domain.Client
- org.apache.fineract.portfolio.client.domain.ClientIdentifier
- org.apache.fineract.portfolio.rate.domain.Rate
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
- org.apache.fineract.portfolio.calendar.domain.Calendar
- org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.useradministration.domain.AppUser
+
+
org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
org.apache.fineract.useradministration.domain.Permission
org.apache.fineract.useradministration.domain.AppUserClientMapping
-
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.accounting.closure.domain.GLClosure
+ org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount
+ org.apache.fineract.accounting.glaccount.domain.TrialBalance
+ org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping
+ org.apache.fineract.accounting.rule.domain.AccountingRule
+ org.apache.fineract.accounting.rule.domain.AccountingTagRule
+ org.apache.fineract.accounting.journalentry.domain.JournalEntry
+
+
org.apache.fineract.portfolio.charge.domain.Charge
-
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+
+
org.apache.fineract.portfolio.tax.domain.TaxComponent
org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
- org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter
+ org.apache.fineract.portfolio.tax.domain.TaxGroup
+ org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+
false
diff --git a/fineract-avro-schemas/build.gradle b/fineract-avro-schemas/build.gradle
index e94a01d94..49c061163 100644
--- a/fineract-avro-schemas/build.gradle
+++ b/fineract-avro-schemas/build.gradle
@@ -132,8 +132,4 @@ tasks.named('sourcesJar') {
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 505273c14..b3c2c6ff3 100644
--- a/fineract-branch/build.gradle
+++ b/fineract-branch/build.gradle
@@ -22,32 +22,50 @@ 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 classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/branch/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
+
+
compileJava {
dependsOn ':fineract-avro-schemas:buildJavaSdk'
}
@@ -112,3 +130,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-branch/src/main/resources/jpa/static-weaving/module/branch/persistence.xml b/fineract-branch/src/main/resources/jpa/static-weaving/module/branch/persistence.xml
new file mode 100644
index 000000000..5e972e532
--- /dev/null
+++ b/fineract-branch/src/main/resources/jpa/static-weaving/module/branch/persistence.xml
@@ -0,0 +1,100 @@
+
+
+
+
+
+
+
+
+
+ org.eclipse.persistence.jpa.PersistenceProvider
+
+
+ org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
+ org.apache.fineract.useradministration.domain.Permission
+ org.apache.fineract.useradministration.domain.AppUserClientMapping
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.accounting.closure.domain.GLClosure
+ org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount
+ org.apache.fineract.accounting.glaccount.domain.TrialBalance
+ org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping
+ org.apache.fineract.accounting.rule.domain.AccountingRule
+ org.apache.fineract.accounting.rule.domain.AccountingTagRule
+ org.apache.fineract.accounting.journalentry.domain.JournalEntry
+
+
+ org.apache.fineract.portfolio.charge.domain.Charge
+
+
+ org.apache.fineract.organisation.teller.domain.CashierTransaction
+ org.apache.fineract.organisation.teller.domain.Teller
+ org.apache.fineract.organisation.teller.domain.Cashier
+ org.apache.fineract.organisation.teller.domain.TellerTransaction
+
+
+ org.apache.fineract.portfolio.tax.domain.TaxComponent
+ org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
+ org.apache.fineract.portfolio.tax.domain.TaxGroup
+ org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+
+
+ false
+
+
+
+
+
diff --git a/fineract-charge/build.gradle b/fineract-charge/build.gradle
index 58b90df78..5128875f8 100644
--- a/fineract-charge/build.gradle
+++ b/fineract-charge/build.gradle
@@ -22,32 +22,50 @@ 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 classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/charge/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
+
+
compileJava {
dependsOn ':fineract-avro-schemas:buildJavaSdk'
}
@@ -112,3 +130,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-rates/src/main/resources/META-INF/persistence.xml b/fineract-charge/src/main/resources/jpa/static-weaving/module/charge/persistence.xml
similarity index 72%
rename from fineract-rates/src/main/resources/META-INF/persistence.xml
rename to fineract-charge/src/main/resources/jpa/static-weaving/module/charge/persistence.xml
index b76d09e1a..695790147 100644
--- a/fineract-rates/src/main/resources/META-INF/persistence.xml
+++ b/fineract-charge/src/main/resources/jpa/static-weaving/module/charge/persistence.xml
@@ -22,54 +22,69 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
-
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.staff.domain.Staff
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.office.domain.OrganisationCurrency
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.workingdays.domain.WorkingDays
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.group.domain.GroupRole
- org.apache.fineract.portfolio.client.domain.Client
- org.apache.fineract.portfolio.client.domain.ClientIdentifier
- org.apache.fineract.portfolio.rate.domain.Rate
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
- org.apache.fineract.portfolio.tax.domain.TaxComponent
- org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
- org.apache.fineract.portfolio.calendar.domain.Calendar
- org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.useradministration.domain.AppUser
+
+
org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
org.apache.fineract.useradministration.domain.Permission
org.apache.fineract.useradministration.domain.AppUserClientMapping
-
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.accounting.closure.domain.GLClosure
+ org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount
+ org.apache.fineract.accounting.glaccount.domain.TrialBalance
+ org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping
+ org.apache.fineract.accounting.rule.domain.AccountingRule
+ org.apache.fineract.accounting.rule.domain.AccountingTagRule
+ org.apache.fineract.accounting.journalentry.domain.JournalEntry
+
+
+ org.apache.fineract.portfolio.tax.domain.TaxComponent
+ org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
+ org.apache.fineract.portfolio.tax.domain.TaxGroup
+ org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+
+
org.apache.fineract.portfolio.charge.domain.Charge
+
false
diff --git a/fineract-command/build.gradle b/fineract-command/build.gradle
index 023b5b635..d585dce85 100644
--- a/fineract-command/build.gradle
+++ b/fineract-command/build.gradle
@@ -80,3 +80,59 @@ jmh {
timeOnIteration = '2s' // Time per iteration
benchmarkMode = ['thrpt'] // Default benchmark mode
}
+
+tasks.register('staticWeaveJpa', JavaExec) {
+ dependsOn classes
+
+ def classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/command/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
+
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
+ classpath = sourceSets.main.runtimeClasspath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
+}
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
+}
+
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
+}
+
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
+}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-command/dependencies.gradle b/fineract-command/dependencies.gradle
index 8186f1181..2a1355cb1 100644
--- a/fineract-command/dependencies.gradle
+++ b/fineract-command/dependencies.gradle
@@ -41,6 +41,9 @@ dependencies {
'com.ibm.icu:icu4j',
'org.yakworks:spring-icu4j',
)
+ implementation('org.eclipse.persistence:org.eclipse.persistence.jpa') {
+ exclude group: 'org.eclipse.persistence', module: 'jakarta.persistence'
+ }
compileOnly 'org.projectlombok:lombok'
annotationProcessor 'org.projectlombok:lombok'
diff --git a/fineract-command/src/main/java/org/apache/fineract/command/persistence/CommandRepository.java b/fineract-command/src/main/java/org/apache/fineract/command/persistence/CommandRepository.java
index 98e4b3bd0..3b261553f 100644
--- a/fineract-command/src/main/java/org/apache/fineract/command/persistence/CommandRepository.java
+++ b/fineract-command/src/main/java/org/apache/fineract/command/persistence/CommandRepository.java
@@ -18,7 +18,7 @@
*/
package org.apache.fineract.command.persistence;
-import org.apache.fineract.command.persistence.model.CommandEntity;
+import org.apache.fineract.command.persistence.domain.CommandEntity;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
diff --git a/fineract-command/src/main/java/org/apache/fineract/command/persistence/model/CommandEntity.java b/fineract-command/src/main/java/org/apache/fineract/command/persistence/domain/CommandEntity.java
similarity index 97%
rename from fineract-command/src/main/java/org/apache/fineract/command/persistence/model/CommandEntity.java
rename to fineract-command/src/main/java/org/apache/fineract/command/persistence/domain/CommandEntity.java
index 06b78eec7..e7d5e4e86 100644
--- a/fineract-command/src/main/java/org/apache/fineract/command/persistence/model/CommandEntity.java
+++ b/fineract-command/src/main/java/org/apache/fineract/command/persistence/domain/CommandEntity.java
@@ -16,7 +16,7 @@
* specific language governing permissions and limitations
* under the License.
*/
-package org.apache.fineract.command.persistence.model;
+package org.apache.fineract.command.persistence.domain;
import com.fasterxml.jackson.databind.JsonNode;
import jakarta.persistence.Column;
diff --git a/fineract-command/src/main/java/org/apache/fineract/command/persistence/mapping/CommandMapper.java b/fineract-command/src/main/java/org/apache/fineract/command/persistence/mapping/CommandMapper.java
index 45487722d..31a2c4351 100644
--- a/fineract-command/src/main/java/org/apache/fineract/command/persistence/mapping/CommandMapper.java
+++ b/fineract-command/src/main/java/org/apache/fineract/command/persistence/mapping/CommandMapper.java
@@ -22,7 +22,7 @@ import static org.mapstruct.InjectionStrategy.CONSTRUCTOR;
import static org.mapstruct.MappingConstants.ComponentModel.SPRING;
import org.apache.fineract.command.core.Command;
-import org.apache.fineract.command.persistence.model.CommandEntity;
+import org.apache.fineract.command.persistence.domain.CommandEntity;
import org.mapstruct.InheritInverseConfiguration;
import org.mapstruct.Mapper;
import org.mapstruct.Mapping;
diff --git a/fineract-core/src/main/resources/META-INF/persistence.xml b/fineract-command/src/main/resources/jpa/static-weaving/module/command/persistence.xml
similarity index 74%
rename from fineract-core/src/main/resources/META-INF/persistence.xml
rename to fineract-command/src/main/resources/jpa/static-weaving/module/command/persistence.xml
index 105688157..465ba382f 100644
--- a/fineract-core/src/main/resources/META-INF/persistence.xml
+++ b/fineract-command/src/main/resources/jpa/static-weaving/module/command/persistence.xml
@@ -22,13 +22,19 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
+
+
+ org.apache.fineract.command.persistence.domain.CommandEntity
+ org.apache.fineract.command.persistence.converter.JsonAttributeConverter
+
false
diff --git a/fineract-core/build.gradle b/fineract-core/build.gradle
index 1d0a8dc66..19281887d 100644
--- a/fineract-core/build.gradle
+++ b/fineract-core/build.gradle
@@ -22,32 +22,50 @@ apply plugin: 'java'
apply plugin: 'eclipse'
tasks.register('staticWeaveJpa', JavaExec) {
- group = "build"
- description = "Performs EclipseLink static weaving of entity classes"
+ dependsOn classes
- dependsOn classes, processResources
+ def classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/core/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- def classesDir = file(sourceSets.main.output.classesDirs.asPath)
-
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir, classesDir, classesDir
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
+
+
configurations {
providedRuntime // needed for Spring Boot executable WAR
providedCompile
@@ -72,7 +90,7 @@ configurations {
apply from: 'dependencies.gradle'
compileJava {
- dependsOn ':fineract-avro-schemas:compileJava', processResources
+ dependsOn ':fineract-avro-schemas:compileJava'
options.compilerArgs += ['-parameters']
}
@@ -101,3 +119,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-charge/src/main/resources/META-INF/persistence.xml b/fineract-core/src/main/resources/jpa/static-weaving/module/core/persistence.xml
similarity index 75%
rename from fineract-charge/src/main/resources/META-INF/persistence.xml
rename to fineract-core/src/main/resources/jpa/static-weaving/module/core/persistence.xml
index 9d04d96a0..aeb8e6522 100644
--- a/fineract-charge/src/main/resources/META-INF/persistence.xml
+++ b/fineract-core/src/main/resources/jpa/static-weaving/module/core/persistence.xml
@@ -22,53 +22,51 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
-
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.staff.domain.Staff
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.office.domain.OrganisationCurrency
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.workingdays.domain.WorkingDays
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.group.domain.GroupRole
- org.apache.fineract.portfolio.client.domain.Client
- org.apache.fineract.portfolio.client.domain.ClientIdentifier
- org.apache.fineract.portfolio.rate.domain.Rate
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
- org.apache.fineract.portfolio.calendar.domain.Calendar
- org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.useradministration.domain.AppUser
+
+
org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
org.apache.fineract.useradministration.domain.Permission
org.apache.fineract.useradministration.domain.AppUserClientMapping
-
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
- org.apache.fineract.portfolio.tax.domain.TaxComponent
- org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
false
diff --git a/fineract-document/build.gradle b/fineract-document/build.gradle
index 8410fbff3..dd1e3bf65 100644
--- a/fineract-document/build.gradle
+++ b/fineract-document/build.gradle
@@ -22,32 +22,50 @@ 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 classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/document/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
+
+
compileJava {
dependsOn ':fineract-avro-schemas:buildJavaSdk'
}
@@ -100,3 +118,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-branch/src/main/resources/META-INF/persistence.xml b/fineract-document/src/main/resources/jpa/static-weaving/module/document/persistence.xml
similarity index 75%
rename from fineract-branch/src/main/resources/META-INF/persistence.xml
rename to fineract-document/src/main/resources/jpa/static-weaving/module/document/persistence.xml
index ef4086d55..7b0325007 100644
--- a/fineract-branch/src/main/resources/META-INF/persistence.xml
+++ b/fineract-document/src/main/resources/jpa/static-weaving/module/document/persistence.xml
@@ -22,53 +22,54 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.staff.domain.Staff
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.office.domain.OrganisationCurrency
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.workingdays.domain.WorkingDays
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.group.domain.GroupRole
- org.apache.fineract.portfolio.client.domain.Client
- org.apache.fineract.portfolio.client.domain.ClientIdentifier
- org.apache.fineract.portfolio.rate.domain.Rate
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
- org.apache.fineract.portfolio.tax.domain.TaxComponent
- org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
- org.apache.fineract.portfolio.calendar.domain.Calendar
- org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.useradministration.domain.AppUser
+
+
org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
org.apache.fineract.useradministration.domain.Permission
org.apache.fineract.useradministration.domain.AppUserClientMapping
-
- org.apache.fineract.portfolio.charge.domain.Charge
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.infrastructure.documentmanagement.domain.Document
+
false
diff --git a/fineract-investor/build.gradle b/fineract-investor/build.gradle
index 5fdbf51e3..ce13e7b06 100644
--- a/fineract-investor/build.gradle
+++ b/fineract-investor/build.gradle
@@ -22,32 +22,50 @@ 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 classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/investor/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
+
+
compileJava {
dependsOn ':fineract-avro-schemas:buildJavaSdk'
}
@@ -106,3 +124,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-provider/src/main/resources/META-INF/persistence.xml b/fineract-investor/src/main/resources/jpa/static-weaving/module/investor/persistence.xml
similarity index 71%
rename from fineract-provider/src/main/resources/META-INF/persistence.xml
rename to fineract-investor/src/main/resources/jpa/static-weaving/module/investor/persistence.xml
index eba5ded16..4468eb515 100644
--- a/fineract-provider/src/main/resources/META-INF/persistence.xml
+++ b/fineract-investor/src/main/resources/jpa/static-weaving/module/investor/persistence.xml
@@ -22,59 +22,73 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
-
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
+
+
+ org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.staff.domain.Staff
org.apache.fineract.organisation.workingdays.domain.WorkingDays
+ org.apache.fineract.useradministration.domain.Permission
+ org.apache.fineract.useradministration.domain.AppUserClientMapping
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
org.apache.fineract.portfolio.calendar.domain.Calendar
org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.portfolio.client.domain.Client
org.apache.fineract.portfolio.client.domain.ClientIdentifier
org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.GroupRole
org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.rate.domain.Rate
- org.apache.fineract.useradministration.domain.AppUser
- org.apache.fineract.useradministration.domain.AppUserClientMapping
- org.apache.fineract.useradministration.domain.Permission
- org.apache.fineract.useradministration.domain.Role
-
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.accounting.closure.domain.GLClosure
+ org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount
+ org.apache.fineract.accounting.glaccount.domain.TrialBalance
+ org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping
+ org.apache.fineract.accounting.rule.domain.AccountingRule
+ org.apache.fineract.accounting.rule.domain.AccountingTagRule
+ org.apache.fineract.accounting.journalentry.domain.JournalEntry
+
+
+ org.apache.fineract.portfolio.charge.domain.Charge
+
+
org.apache.fineract.investor.domain.ExternalAssetOwner
- org.apache.fineract.investor.domain.ExternalAssetOwnerJournalEntryMapping
+ org.apache.fineract.investor.domain.ExternalAssetOwnerLoanProductAttributes
org.apache.fineract.investor.domain.ExternalAssetOwnerTransfer
org.apache.fineract.investor.domain.ExternalAssetOwnerTransferDetails
org.apache.fineract.investor.domain.ExternalAssetOwnerTransferJournalEntryMapping
org.apache.fineract.investor.domain.ExternalAssetOwnerTransferLoanMapping
-
- org.apache.fineract.portfolio.collateral.domain.LoanCollateral
- org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement
- org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain
+ org.apache.fineract.investor.domain.ExternalAssetOwnerJournalEntryMapping
+
+
org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappings
org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction
org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistory
@@ -85,7 +99,6 @@
org.apache.fineract.portfolio.loanaccount.domain.LoanChargePaidBy
org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement
org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule
- org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule
org.apache.fineract.portfolio.loanaccount.domain.LoanDisbursementDetails
org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge
org.apache.fineract.portfolio.loanaccount.domain.LoanInterestRecalcualtionAdditionalDetails
@@ -96,6 +109,7 @@
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment
org.apache.fineract.portfolio.loanaccount.domain.LoanRescheduleRequestToTermVariationMapping
org.apache.fineract.portfolio.loanaccount.domain.LoanStatusChangeHistory
+ org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter
org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariations
org.apache.fineract.portfolio.loanaccount.domain.LoanTopupDetails
org.apache.fineract.portfolio.loanaccount.domain.LoanTrancheCharge
@@ -104,13 +118,8 @@
org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation
org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMapping
org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter
- org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter
+ org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistory
org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest
- org.apache.fineract.portfolio.loanproduct.domain.AllocationType
- org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter
- org.apache.fineract.portfolio.loanproduct.domain.CreditAllocationTransactionType
- org.apache.fineract.portfolio.loanproduct.domain.DueType
- org.apache.fineract.portfolio.loanproduct.domain.FutureInstallmentAllocationRule
org.apache.fineract.portfolio.loanproduct.domain.LoanProduct
org.apache.fineract.portfolio.loanproduct.domain.LoanProductBorrowerCycleVariations
org.apache.fineract.portfolio.loanproduct.domain.LoanProductConfigurableAttributes
@@ -120,48 +129,24 @@
org.apache.fineract.portfolio.loanproduct.domain.LoanProductInterestRecalculationDetails
org.apache.fineract.portfolio.loanproduct.domain.LoanProductPaymentAllocationRule
org.apache.fineract.portfolio.loanproduct.domain.LoanProductVariableInstallmentConfig
- org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTransactionType
- org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationType
+ org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks
org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeListConverter
org.apache.fineract.portfolio.loanproduct.domain.SupportedInterestRefundTypesListConverter
- org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks
- org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter
-
- org.apache.fineract.interoperation.domain.InteropIdentifier
- org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives
- org.apache.fineract.portfolio.interestratechart.domain.InterestRateChart
- org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlab
- org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentives
- org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChart
- org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChartSlabs
- org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransaction
- org.apache.fineract.portfolio.savings.domain.DepositAccountTermAndPreClosure
- org.apache.fineract.portfolio.savings.domain.DepositProductRecurringDetail
- org.apache.fineract.portfolio.savings.domain.DepositProductTermAndPreClosure
- org.apache.fineract.portfolio.savings.domain.FixedDepositAccount
- org.apache.fineract.portfolio.savings.domain.FixedDepositProduct
- org.apache.fineract.portfolio.savings.domain.GroupSavingsIndividualMonitoring
- org.apache.fineract.portfolio.savings.domain.RecurringDepositAccount
- org.apache.fineract.portfolio.savings.domain.RecurringDepositProduct
- org.apache.fineract.portfolio.savings.domain.SavingsAccount
- org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge
- org.apache.fineract.portfolio.savings.domain.SavingsAccountChargePaidBy
- org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction
- org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionTaxDetails
- org.apache.fineract.portfolio.savings.domain.SavingsOfficerAssignmentHistory
- org.apache.fineract.portfolio.savings.domain.SavingsProduct
-
- org.apache.fineract.accounting.rule.domain.AccountingRule
- org.apache.fineract.accounting.rule.domain.AccountingTagRule
-
- org.apache.fineract.infrastructure.documentmanagement.domain.Document
-
- org.apache.fineract.portfolio.charge.domain.Charge
-
+ org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter
+ org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement
+ org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain
+ org.apache.fineract.portfolio.collateral.domain.LoanCollateral
+
+
org.apache.fineract.portfolio.tax.domain.TaxComponent
org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
org.apache.fineract.portfolio.tax.domain.TaxGroup
org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+
+
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
+
false
diff --git a/fineract-loan/build.gradle b/fineract-loan/build.gradle
index 5d333cbad..3da2ce80e 100644
--- a/fineract-loan/build.gradle
+++ b/fineract-loan/build.gradle
@@ -22,31 +22,46 @@ 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()
-
+ def classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
copy {
- from "src/main/resources/jpa/loan/persistence.xml"
- into "$buildDir/classes/java/main/META-INF"
+ from file("src/main/resources/jpa/static-weaving/module/loan/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
}
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
+}
+
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
compileJava {
@@ -114,8 +129,17 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
}
diff --git a/fineract-investor/src/main/resources/META-INF/persistence.xml b/fineract-loan/src/main/resources/jpa/static-weaving/module/loan/persistence.xml
similarity index 84%
rename from fineract-investor/src/main/resources/META-INF/persistence.xml
rename to fineract-loan/src/main/resources/jpa/static-weaving/module/loan/persistence.xml
index e2d5a0b00..cf99a6070 100644
--- a/fineract-investor/src/main/resources/META-INF/persistence.xml
+++ b/fineract-loan/src/main/resources/jpa/static-weaving/module/loan/persistence.xml
@@ -22,61 +22,68 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.staff.domain.Staff
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.workingdays.domain.WorkingDays
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.group.domain.GroupRole
- org.apache.fineract.portfolio.client.domain.Client
- org.apache.fineract.portfolio.client.domain.ClientIdentifier
- org.apache.fineract.portfolio.rate.domain.Rate
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
- org.apache.fineract.portfolio.charge.domain.Charge
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
- org.apache.fineract.portfolio.tax.domain.TaxComponent
- org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
- org.apache.fineract.portfolio.calendar.domain.Calendar
- org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.useradministration.domain.AppUser
+
+
org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
org.apache.fineract.useradministration.domain.Permission
org.apache.fineract.useradministration.domain.AppUserClientMapping
-
- org.apache.fineract.portfolio.collateral.domain.LoanCollateral
- org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement
- org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.accounting.closure.domain.GLClosure
+ org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount
+ org.apache.fineract.accounting.glaccount.domain.TrialBalance
+ org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping
+ org.apache.fineract.accounting.rule.domain.AccountingRule
+ org.apache.fineract.accounting.rule.domain.AccountingTagRule
+ org.apache.fineract.accounting.journalentry.domain.JournalEntry
+
+
+ org.apache.fineract.portfolio.charge.domain.Charge
+
+
org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappings
org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction
org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistory
org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTag
- org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter
org.apache.fineract.portfolio.loanaccount.domain.GroupLoanIndividualMonitoringAccount
org.apache.fineract.portfolio.loanaccount.domain.Loan
org.apache.fineract.portfolio.loanaccount.domain.LoanCharge
@@ -93,6 +100,7 @@
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment
org.apache.fineract.portfolio.loanaccount.domain.LoanRescheduleRequestToTermVariationMapping
org.apache.fineract.portfolio.loanaccount.domain.LoanStatusChangeHistory
+ org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter
org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariations
org.apache.fineract.portfolio.loanaccount.domain.LoanTopupDetails
org.apache.fineract.portfolio.loanaccount.domain.LoanTrancheCharge
@@ -100,6 +108,9 @@
org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction
org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation
org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMapping
+ org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter
+ org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistory
+ org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest
org.apache.fineract.portfolio.loanproduct.domain.LoanProduct
org.apache.fineract.portfolio.loanproduct.domain.LoanProductBorrowerCycleVariations
org.apache.fineract.portfolio.loanproduct.domain.LoanProductConfigurableAttributes
@@ -109,20 +120,25 @@
org.apache.fineract.portfolio.loanproduct.domain.LoanProductInterestRecalculationDetails
org.apache.fineract.portfolio.loanproduct.domain.LoanProductPaymentAllocationRule
org.apache.fineract.portfolio.loanproduct.domain.LoanProductVariableInstallmentConfig
- org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationType
- org.apache.fineract.portfolio.loanproduct.domain.DueType
- org.apache.fineract.portfolio.loanproduct.domain.AllocationType
- org.apache.fineract.portfolio.loanproduct.domain.FutureInstallmentAllocationRule
- org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTransactionType
- org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter
- org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule
- org.apache.fineract.portfolio.loanproduct.domain.CreditAllocationTransactionType
+ org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks
org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeListConverter
org.apache.fineract.portfolio.loanproduct.domain.SupportedInterestRefundTypesListConverter
- org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter
- org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest
- org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks
- org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter
+ org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter
+ org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement
+ org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain
+ org.apache.fineract.portfolio.collateral.domain.LoanCollateral
+
+
+ org.apache.fineract.portfolio.tax.domain.TaxComponent
+ org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
+ org.apache.fineract.portfolio.tax.domain.TaxGroup
+ org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+
+
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
+
+
false
diff --git a/fineract-progressive-loan/build.gradle b/fineract-progressive-loan/build.gradle
index 9017f54b4..458189342 100644
--- a/fineract-progressive-loan/build.gradle
+++ b/fineract-progressive-loan/build.gradle
@@ -22,32 +22,50 @@ 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 classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/progressive-loan/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
+
+
compileJava {
dependsOn ':fineract-avro-schemas:buildJavaSdk'
}
@@ -106,3 +124,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-progressive-loan/src/main/resources/META-INF/persistence.xml b/fineract-progressive-loan/src/main/resources/jpa/static-weaving/module/progressive-loan/persistence.xml
similarity index 86%
rename from fineract-progressive-loan/src/main/resources/META-INF/persistence.xml
rename to fineract-progressive-loan/src/main/resources/jpa/static-weaving/module/progressive-loan/persistence.xml
index a5ff252eb..53b878af9 100644
--- a/fineract-progressive-loan/src/main/resources/META-INF/persistence.xml
+++ b/fineract-progressive-loan/src/main/resources/jpa/static-weaving/module/progressive-loan/persistence.xml
@@ -22,57 +22,68 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
-
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.staff.domain.Staff
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.office.domain.OrganisationCurrency
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.workingdays.domain.WorkingDays
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.group.domain.GroupRole
- org.apache.fineract.portfolio.client.domain.Client
- org.apache.fineract.portfolio.client.domain.ClientIdentifier
- org.apache.fineract.portfolio.rate.domain.Rate
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
- org.apache.fineract.portfolio.calendar.domain.Calendar
- org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.useradministration.domain.AppUser
+
+
org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
org.apache.fineract.useradministration.domain.Permission
org.apache.fineract.useradministration.domain.AppUserClientMapping
-
- org.apache.fineract.portfolio.collateral.domain.LoanCollateral
- org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement
- org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.accounting.closure.domain.GLClosure
+ org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount
+ org.apache.fineract.accounting.glaccount.domain.TrialBalance
+ org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping
+ org.apache.fineract.accounting.rule.domain.AccountingRule
+ org.apache.fineract.accounting.rule.domain.AccountingTagRule
+ org.apache.fineract.accounting.journalentry.domain.JournalEntry
+
+
+ org.apache.fineract.portfolio.charge.domain.Charge
+
+
org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappings
org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction
org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistory
org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTag
- org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter
org.apache.fineract.portfolio.loanaccount.domain.GroupLoanIndividualMonitoringAccount
org.apache.fineract.portfolio.loanaccount.domain.Loan
org.apache.fineract.portfolio.loanaccount.domain.LoanCharge
@@ -89,6 +100,7 @@
org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment
org.apache.fineract.portfolio.loanaccount.domain.LoanRescheduleRequestToTermVariationMapping
org.apache.fineract.portfolio.loanaccount.domain.LoanStatusChangeHistory
+ org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter
org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariations
org.apache.fineract.portfolio.loanaccount.domain.LoanTopupDetails
org.apache.fineract.portfolio.loanaccount.domain.LoanTrancheCharge
@@ -96,6 +108,9 @@
org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction
org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation
org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMapping
+ org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter
+ org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistory
+ org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest
org.apache.fineract.portfolio.loanproduct.domain.LoanProduct
org.apache.fineract.portfolio.loanproduct.domain.LoanProductBorrowerCycleVariations
org.apache.fineract.portfolio.loanproduct.domain.LoanProductConfigurableAttributes
@@ -105,35 +120,27 @@
org.apache.fineract.portfolio.loanproduct.domain.LoanProductInterestRecalculationDetails
org.apache.fineract.portfolio.loanproduct.domain.LoanProductPaymentAllocationRule
org.apache.fineract.portfolio.loanproduct.domain.LoanProductVariableInstallmentConfig
- org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationType
- org.apache.fineract.portfolio.loanproduct.domain.DueType
- org.apache.fineract.portfolio.loanproduct.domain.AllocationType
- org.apache.fineract.portfolio.loanproduct.domain.FutureInstallmentAllocationRule
- org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTransactionType
- org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter
- org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule
- org.apache.fineract.portfolio.loanproduct.domain.CreditAllocationTransactionType
+ org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks
org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeListConverter
org.apache.fineract.portfolio.loanproduct.domain.SupportedInterestRefundTypesListConverter
- org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter
- org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest
- org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks
- org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter
-
- org.apache.fineract.portfolio.charge.domain.Charge
-
- org.apache.fineract.accounting.closure.domain.GLClosure
- org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping
- org.apache.fineract.accounting.rule.domain.AccountingRule
- org.apache.fineract.accounting.rule.domain.AccountingTagRule
-
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+ org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter
+ org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement
+ org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain
+ org.apache.fineract.portfolio.collateral.domain.LoanCollateral
+
+
org.apache.fineract.portfolio.tax.domain.TaxComponent
org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
+ org.apache.fineract.portfolio.tax.domain.TaxGroup
+ org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+
+
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
+
+
+ org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeBalance
+ org.apache.fineract.portfolio.loanaccount.domain.ProgressiveLoanModel
false
diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle
index 8c7bfe536..51d79f16a 100644
--- a/fineract-provider/build.gradle
+++ b/fineract-provider/build.gradle
@@ -31,30 +31,54 @@ 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")
+ def classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/provider/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+tasks.register("weavedPlainJar", Jar) {
+ archiveClassifier.set("plain")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+
+ from(layout.buildDirectory.dir("weaved-classes"))
+
+ exclude("META-INF/persistence.xml")
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedPlainJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
+}
+
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
tasks.named('staticWeaveJpa') {
@@ -244,7 +268,22 @@ tasks.register('setBlankPassword') {
}
}
+tasks.register("mergeWeavedOutput", Copy) {
+ dependsOn staticWeaveJpa
+ from layout.buildDirectory.dir("weaved-classes")
+ into layout.buildDirectory.dir("merged-weaved-classes/java/main")
+ // Optional: exclude files like persistence.xml
+ exclude("META-INF/persistence.xml")
+}
+
bootRun {
+ dependsOn mergeWeavedOutput
+
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+
+ classpath = files(weavedClasses) + sourceSets.main.runtimeClasspath.filter { file ->
+ file.name.endsWith('.jar')
+ }
jvmArgs = [
"-Dspring.output.ansi.enabled=ALWAYS"
]
@@ -259,13 +298,64 @@ springBoot {
mainClass = 'org.apache.fineract.ServerApplication'
}
-bootJar {
- duplicatesStrategy = DuplicatesStrategy.EXCLUDE
- manifest {
- attributes('Main-Class': 'org.springframework.boot.loader.launch.PropertiesLauncher', 'Implementation-Title': 'Apache Fineract', 'Implementation-Version': project.version)
- }
- archiveClassifier = ''
+// Create a new weavedBootJar task that extends BootJar
+tasks.register("weavedBootJar", org.springframework.boot.gradle.tasks.bundling.BootJar) {
+ group = "build"
+ description = "Builds a bootable JAR with weaved classes"
+ dependsOn staticWeaveJpa
dependsOn resolve
+
+ archiveClassifier.set("")
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+
+ //Required for bootable JAR
+ mainClass.set("org.apache.fineract.ServerApplication")
+ targetJavaVersion.set(JavaVersion.VERSION_21)
+
+ // Replace default classes with weaved ones
+ into("BOOT-INF/classes") {
+ from(layout.buildDirectory.dir("weaved-classes"))
+ }
+
+ manifest {
+ attributes(
+ 'Main-Class': 'org.springframework.boot.loader.launch.PropertiesLauncher',
+ 'Implementation-Title': 'Apache Fineract',
+ 'Implementation-Version': project.version,
+ 'Start-Class': 'org.apache.fineract.ServerApplication'
+ )
+ }
+ classpath configurations.runtimeClasspath
+}
+
+// Configure the bootJar task to include all dependencies
+tasks.withType(org.springframework.boot.gradle.tasks.bundling.BootJar) {
+ // This ensures the launcher is included
+ requiresUnpack '**/*.jar'
+
+ // This ensures the launcher classes are included
+ launchScript()
+}
+
+// Make assemble depend on weavedBootJar instead of bootJar
+tasks.named('assemble') {
+ dependsOn 'weavedBootJar'
+}
+
+// Disable the default bootJar task
+bootJar {
+ dependsOn weavedBootJar
+ enabled = false
+}
+
+// Ensure jib uses the weaved classes
+tasks.named('jibDockerBuild') {
+ dependsOn 'staticWeaveJpa'
+}
+
+// Ensure staticWeaveJpa runs before jib
+tasks.named('jib') {
+ dependsOn 'staticWeaveJpa'
}
jib {
@@ -302,6 +392,15 @@ jib {
user = 'nobody:nogroup'
}
+ extraDirectories {
+ paths {
+ path {
+ from = layout.buildDirectory.dir("weaved-classes").get().asFile
+ into = '/app/classes'
+ }
+ }
+ }
+
allowInsecureRegistries = true
dependencies {
@@ -417,3 +516,50 @@ tasks.register('devRun', org.springframework.boot.gradle.tasks.run.BootRun) {
println "Running in development mode - quality checks are disabled"
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
+
+tasks.register("weavedCucumberTest", JavaExec) {
+ group = "verification"
+ description = "Runs Cucumber tests with weaved classes"
+
+ dependsOn staticWeaveJpa, compileTestJava, processTestResources
+
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+
+ mainClass.set("io.cucumber.core.cli.Main") // Cucumber JUnit 5 CLI entrypoint
+
+ args = [
+ '--glue', 'org.apache.fineract', // your step defs package
+ 'src/test/resources/features' // your feature files path
+ ]
+
+ jvmArgs = ["-Dspring.output.ansi.enabled=ALWAYS"]
+}
+
+tasks.named("cucumber") {
+ dependsOn weavedCucumberTest
+ enabled = false
+}
diff --git a/fineract-provider/src/main/resources/jpa/static-weaving/module/provider/persistence.xml b/fineract-provider/src/main/resources/jpa/static-weaving/module/provider/persistence.xml
new file mode 100644
index 000000000..fb51c9430
--- /dev/null
+++ b/fineract-provider/src/main/resources/jpa/static-weaving/module/provider/persistence.xml
@@ -0,0 +1,367 @@
+
+
+
+
+
+
+
+
+
+ org.eclipse.persistence.jpa.PersistenceProvider
+
+
+ org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
+ org.apache.fineract.useradministration.domain.Permission
+ org.apache.fineract.useradministration.domain.AppUserClientMapping
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.accounting.closure.domain.GLClosure
+ org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount
+ org.apache.fineract.accounting.glaccount.domain.TrialBalance
+ org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping
+ org.apache.fineract.accounting.rule.domain.AccountingRule
+ org.apache.fineract.accounting.rule.domain.AccountingTagRule
+ org.apache.fineract.accounting.journalentry.domain.JournalEntry
+
+
+ org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauToken
+ org.apache.fineract.infrastructure.creditbureau.domain.CreditReport
+ org.apache.fineract.infrastructure.creditbureau.domain.CreditBureau
+ org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauLoanProductMapping
+ org.apache.fineract.infrastructure.creditbureau.domain.CreditBureauConfiguration
+ org.apache.fineract.infrastructure.creditbureau.domain.OrganisationCreditBureau
+
+
+ org.apache.fineract.infrastructure.configuration.domain.ExternalService
+ org.apache.fineract.infrastructure.configuration.domain.GlobalConfigurationProperty
+ org.apache.fineract.infrastructure.configuration.domain.ExternalServicesProperties
+
+
+ org.apache.fineract.infrastructure.bulkimport.domain.ImportDocument
+
+
+ org.apache.fineract.infrastructure.survey.domain.Likelihood
+
+
+ org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelation
+ org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMapping
+ org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccess
+
+
+ org.apache.fineract.infrastructure.sms.domain.SmsMessage
+ org.apache.fineract.infrastructure.campaigns.sms.domain.SmsCampaign
+
+
+ org.apache.fineract.infrastructure.security.domain.TFAccessToken
+ org.apache.fineract.infrastructure.security.domain.TwoFactorConfiguration
+
+
+ org.apache.fineract.infrastructure.campaigns.email.domain.EmailCampaign
+ org.apache.fineract.infrastructure.campaigns.email.domain.EmailConfiguration
+ org.apache.fineract.infrastructure.campaigns.email.domain.EmailMessage
+
+
+ org.apache.fineract.infrastructure.accountnumberformat.domain.AccountNumberFormat
+
+
+ org.apache.fineract.portfolio.client.domain.ClientFamilyMembers
+ org.apache.fineract.portfolio.client.domain.ClientNonPerson
+ org.apache.fineract.portfolio.client.domain.ClientTransferDetails
+ org.apache.fineract.portfolio.client.domain.ClientAddress
+ org.apache.fineract.portfolio.client.domain.ClientCharge
+ org.apache.fineract.portfolio.client.domain.ClientTransaction
+ org.apache.fineract.portfolio.client.domain.ClientChargePaidBy
+
+
+ org.apache.fineract.portfolio.meeting.domain.Meeting
+ org.apache.fineract.portfolio.meeting.attendance.domain.ClientAttendance
+
+
+ org.apache.fineract.infrastructure.hooks.domain.Hook
+ org.apache.fineract.infrastructure.hooks.domain.HookResource
+ org.apache.fineract.infrastructure.hooks.domain.HookTemplate
+ org.apache.fineract.infrastructure.hooks.domain.Schema
+ org.apache.fineract.infrastructure.hooks.domain.HookConfiguration
+
+
+ org.apache.fineract.portfolio.address.domain.FieldConfiguration
+ org.apache.fineract.portfolio.address.domain.Address
+
+
+ org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityRelation
+ org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityToEntityMapping
+ org.apache.fineract.infrastructure.entityaccess.domain.FineractEntityAccess
+
+
+ org.apache.fineract.portfolio.self.account.domain.SelfBeneficiariesTPT
+ org.apache.fineract.portfolio.self.device.domain.DeviceRegistration
+ org.apache.fineract.portfolio.self.pockets.domain.Pocket
+ org.apache.fineract.portfolio.self.pockets.domain.PocketAccountMapping
+ org.apache.fineract.portfolio.self.registration.domain.SelfServiceRegistration
+
+
+
+ org.apache.fineract.command.persistence.domain.CommandEntity
+ org.apache.fineract.command.persistence.converter.JsonAttributeConverter
+
+
+ org.apache.fineract.portfolio.charge.domain.Charge
+
+
+ org.apache.fineract.organisation.teller.domain.CashierTransaction
+ org.apache.fineract.organisation.teller.domain.Teller
+ org.apache.fineract.organisation.teller.domain.Cashier
+ org.apache.fineract.organisation.teller.domain.TellerTransaction
+
+
+ org.apache.fineract.investor.domain.ExternalAssetOwner
+ org.apache.fineract.investor.domain.ExternalAssetOwnerLoanProductAttributes
+ org.apache.fineract.investor.domain.ExternalAssetOwnerTransfer
+ org.apache.fineract.investor.domain.ExternalAssetOwnerTransferDetails
+ org.apache.fineract.investor.domain.ExternalAssetOwnerTransferJournalEntryMapping
+ org.apache.fineract.investor.domain.ExternalAssetOwnerTransferLoanMapping
+ org.apache.fineract.investor.domain.ExternalAssetOwnerJournalEntryMapping
+
+
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucketMappings
+ org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyAction
+ org.apache.fineract.portfolio.delinquency.domain.LoanDelinquencyTagHistory
+ org.apache.fineract.portfolio.delinquency.domain.LoanInstallmentDelinquencyTag
+ org.apache.fineract.portfolio.loanaccount.domain.GroupLoanIndividualMonitoringAccount
+ org.apache.fineract.portfolio.loanaccount.domain.Loan
+ org.apache.fineract.portfolio.loanaccount.domain.LoanCharge
+ org.apache.fineract.portfolio.loanaccount.domain.LoanChargePaidBy
+ org.apache.fineract.portfolio.loanaccount.domain.LoanCollateralManagement
+ org.apache.fineract.portfolio.loanaccount.domain.LoanCreditAllocationRule
+ org.apache.fineract.portfolio.loanaccount.domain.LoanDisbursementDetails
+ org.apache.fineract.portfolio.loanaccount.domain.LoanInstallmentCharge
+ org.apache.fineract.portfolio.loanaccount.domain.LoanInterestRecalcualtionAdditionalDetails
+ org.apache.fineract.portfolio.loanaccount.domain.LoanInterestRecalculationDetails
+ org.apache.fineract.portfolio.loanaccount.domain.LoanOfficerAssignmentHistory
+ org.apache.fineract.portfolio.loanaccount.domain.LoanOverdueInstallmentCharge
+ org.apache.fineract.portfolio.loanaccount.domain.LoanPaymentAllocationRule
+ org.apache.fineract.portfolio.loanaccount.domain.LoanRepaymentScheduleInstallment
+ org.apache.fineract.portfolio.loanaccount.domain.LoanRescheduleRequestToTermVariationMapping
+ org.apache.fineract.portfolio.loanaccount.domain.LoanStatusChangeHistory
+ org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter
+ org.apache.fineract.portfolio.loanaccount.domain.LoanTermVariations
+ org.apache.fineract.portfolio.loanaccount.domain.LoanTopupDetails
+ org.apache.fineract.portfolio.loanaccount.domain.LoanTrancheCharge
+ org.apache.fineract.portfolio.loanaccount.domain.LoanTrancheDisbursementCharge
+ org.apache.fineract.portfolio.loanaccount.domain.LoanTransaction
+ org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionRelation
+ org.apache.fineract.portfolio.loanaccount.domain.LoanTransactionToRepaymentScheduleMapping
+ org.apache.fineract.portfolio.loanaccount.domain.reaging.LoanReAgeParameter
+ org.apache.fineract.portfolio.loanaccount.loanschedule.domain.LoanRepaymentScheduleHistory
+ org.apache.fineract.portfolio.loanaccount.rescheduleloan.domain.LoanRescheduleRequest
+ org.apache.fineract.portfolio.loanproduct.domain.LoanProduct
+ org.apache.fineract.portfolio.loanproduct.domain.LoanProductBorrowerCycleVariations
+ org.apache.fineract.portfolio.loanproduct.domain.LoanProductConfigurableAttributes
+ org.apache.fineract.portfolio.loanproduct.domain.LoanProductCreditAllocationRule
+ org.apache.fineract.portfolio.loanproduct.domain.LoanProductFloatingRates
+ org.apache.fineract.portfolio.loanproduct.domain.LoanProductGuaranteeDetails
+ org.apache.fineract.portfolio.loanproduct.domain.LoanProductInterestRecalculationDetails
+ org.apache.fineract.portfolio.loanproduct.domain.LoanProductPaymentAllocationRule
+ org.apache.fineract.portfolio.loanproduct.domain.LoanProductVariableInstallmentConfig
+ org.apache.fineract.portfolio.repaymentwithpostdatedchecks.domain.PostDatedChecks
+ org.apache.fineract.portfolio.loanproduct.domain.PaymentAllocationTypeListConverter
+ org.apache.fineract.portfolio.loanproduct.domain.SupportedInterestRefundTypesListConverter
+ org.apache.fineract.portfolio.loanproduct.domain.AllocationTypeListConverter
+ org.apache.fineract.portfolio.collateralmanagement.domain.ClientCollateralManagement
+ org.apache.fineract.portfolio.collateralmanagement.domain.CollateralManagementDomain
+ org.apache.fineract.portfolio.collateral.domain.LoanCollateral
+
+
+ org.apache.fineract.infrastructure.documentmanagement.domain.Document
+
+
+ org.apache.fineract.portfolio.tax.domain.TaxComponent
+ org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
+ org.apache.fineract.portfolio.tax.domain.TaxGroup
+ org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+
+
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
+
+
+ org.apache.fineract.interoperation.domain.InteropIdentifier
+ org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives
+ org.apache.fineract.portfolio.interestratechart.domain.InterestRateChart
+ org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlab
+ org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentive
+ org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentives
+ org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChart
+ org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChartSlabs
+ org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransaction
+ org.apache.fineract.portfolio.savings.domain.DepositAccountTermAndPreClosure
+ org.apache.fineract.portfolio.savings.domain.DepositProductRecurringDetail
+ org.apache.fineract.portfolio.savings.domain.DepositProductTermAndPreClosure
+ org.apache.fineract.portfolio.savings.domain.FixedDepositProduct
+ org.apache.fineract.portfolio.savings.domain.GroupSavingsIndividualMonitoring
+ org.apache.fineract.portfolio.savings.domain.RecurringDepositProduct
+ org.apache.fineract.portfolio.savings.domain.SavingsAccount
+ org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge
+ org.apache.fineract.portfolio.savings.domain.SavingsAccountChargePaidBy
+ org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction
+ org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionTaxDetails
+ org.apache.fineract.portfolio.savings.domain.SavingsOfficerAssignmentHistory
+ org.apache.fineract.portfolio.savings.domain.SavingsProduct
+
+
+ org.apache.fineract.portfolio.loanaccount.domain.LoanCapitalizedIncomeBalance
+ org.apache.fineract.portfolio.loanaccount.domain.ProgressiveLoanModel
+
+
+ org.apache.fineract.portfolio.account.domain.AccountAssociations
+ org.apache.fineract.portfolio.account.domain.AccountTransferDetails
+ org.apache.fineract.portfolio.account.domain.AccountTransferStandingInstruction
+ org.apache.fineract.portfolio.account.domain.AccountTransferTransaction
+
+
+
+ org.apache.fineract.notification.domain.NotificationMapper
+ org.apache.fineract.notification.domain.Notification
+
+
+ org.apache.fineract.adhocquery.domain.AdHoc
+
+
+ org.apache.fineract.mix.domain.MixTaxonomyMapping
+
+
+ org.apache.fineract.cob.domain.LoanAccountLock
+ org.apache.fineract.cob.domain.BatchBusinessStep
+
+
+ org.apache.fineract.template.domain.Template
+ org.apache.fineract.template.domain.TemplateMapper
+
+
+ org.apache.fineract.accounting.provisioning.domain.LoanProductProvisioningEntry
+ org.apache.fineract.accounting.provisioning.domain.ProvisioningEntry
+
+
+ org.apache.fineract.useradministration.domain.AppUserPreviousPassword
+ org.apache.fineract.useradministration.domain.PasswordValidationPolicy
+
+
+ org.apache.fineract.spm.domain.Question
+ org.apache.fineract.spm.domain.LookupTable
+ org.apache.fineract.spm.domain.Component
+ org.apache.fineract.spm.domain.Scorecard
+ org.apache.fineract.spm.domain.Survey
+ org.apache.fineract.spm.domain.Response
+
+
+ org.apache.fineract.portfolio.loanproduct.productmix.domain.ProductMix
+
+
+ org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteria
+ org.apache.fineract.organisation.provisioning.domain.LoanProductProvisionCriteria
+ org.apache.fineract.organisation.provisioning.domain.ProvisioningCriteriaDefinition
+ org.apache.fineract.organisation.provisioning.domain.ProvisioningCategory
+
+
+ org.apache.fineract.organisation.office.domain.OfficeTransaction
+
+
+ org.apache.fineract.portfolio.self.registration.domain.SelfServiceRegistration
+
+
+ org.apache.fineract.portfolio.note.domain.Note
+
+
+ org.apache.fineract.portfolio.savings.domain.RecurringDepositScheduleInstallment
+ org.apache.fineract.portfolio.savings.domain.FixedDepositAccount
+ org.apache.fineract.portfolio.savings.domain.RecurringDepositAccount
+ org.apache.fineract.portfolio.savings.domain.DepositAccountRecurringDetail
+
+
+ org.apache.fineract.portfolio.shareproducts.domain.ShareProductDividendPayOutDetails
+ org.apache.fineract.portfolio.shareproducts.domain.ShareProduct
+ org.apache.fineract.portfolio.shareproducts.domain.ShareProductMarketPrice
+
+
+ org.apache.fineract.portfolio.shareaccounts.domain.ShareAccount
+ org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountCharge
+ org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountChargePaidBy
+ org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountDividendDetails
+ org.apache.fineract.portfolio.shareaccounts.domain.ShareAccountTransaction
+
+
+ org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJob
+ org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobConfiguration
+ org.apache.fineract.infrastructure.reportmailingjob.domain.ReportMailingJobRunHistory
+
+
+ org.apache.fineract.infrastructure.dataqueries.domain.RegisteredDatatable
+ org.apache.fineract.infrastructure.dataqueries.domain.Report
+ org.apache.fineract.infrastructure.dataqueries.domain.ReportParameterUsage
+ org.apache.fineract.infrastructure.dataqueries.domain.ReportParameter
+ org.apache.fineract.infrastructure.dataqueries.domain.EntityDatatableChecks
+
+
+ org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingDetails
+ org.apache.fineract.portfolio.loanaccount.guarantor.domain.GuarantorFundingTransaction
+ org.apache.fineract.portfolio.loanaccount.guarantor.domain.Guarantor
+
+ false
+
+
+
+
+
diff --git a/fineract-rates/build.gradle b/fineract-rates/build.gradle
index 36e88f449..c6cbed7ef 100644
--- a/fineract-rates/build.gradle
+++ b/fineract-rates/build.gradle
@@ -22,32 +22,50 @@ 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 classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/rates/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
+
+
compileJava {
dependsOn ':fineract-avro-schemas:buildJavaSdk'
}
@@ -112,3 +130,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-tax/src/main/resources/META-INF/persistence.xml b/fineract-rates/src/main/resources/jpa/static-weaving/module/rates/persistence.xml
similarity index 80%
rename from fineract-tax/src/main/resources/META-INF/persistence.xml
rename to fineract-rates/src/main/resources/jpa/static-weaving/module/rates/persistence.xml
index d3ba0d405..f6aa61581 100644
--- a/fineract-tax/src/main/resources/META-INF/persistence.xml
+++ b/fineract-rates/src/main/resources/jpa/static-weaving/module/rates/persistence.xml
@@ -22,52 +22,55 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
-
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.staff.domain.Staff
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.office.domain.OrganisationCurrency
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.workingdays.domain.WorkingDays
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.group.domain.GroupRole
- org.apache.fineract.portfolio.client.domain.Client
- org.apache.fineract.portfolio.client.domain.ClientIdentifier
- org.apache.fineract.portfolio.rate.domain.Rate
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
- org.apache.fineract.portfolio.tax.domain.TaxComponent
- org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
- org.apache.fineract.portfolio.calendar.domain.Calendar
- org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.useradministration.domain.AppUser
+
+
org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
org.apache.fineract.useradministration.domain.Permission
org.apache.fineract.useradministration.domain.AppUserClientMapping
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
+
false
diff --git a/fineract-report/build.gradle b/fineract-report/build.gradle
index 16e958dfe..7e1d51567 100644
--- a/fineract-report/build.gradle
+++ b/fineract-report/build.gradle
@@ -22,32 +22,50 @@ 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 classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/report/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
+
+
compileJava {
dependsOn ':fineract-avro-schemas:buildJavaSdk'
}
@@ -112,3 +130,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-document/src/main/resources/META-INF/persistence.xml b/fineract-report/src/main/resources/jpa/static-weaving/module/report/persistence.xml
similarity index 75%
rename from fineract-document/src/main/resources/META-INF/persistence.xml
rename to fineract-report/src/main/resources/jpa/static-weaving/module/report/persistence.xml
index 0c3e741c3..aeb8e6522 100644
--- a/fineract-document/src/main/resources/META-INF/persistence.xml
+++ b/fineract-report/src/main/resources/jpa/static-weaving/module/report/persistence.xml
@@ -22,49 +22,51 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
-
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.staff.domain.Staff
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.office.domain.OrganisationCurrency
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.workingdays.domain.WorkingDays
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.group.domain.GroupRole
- org.apache.fineract.portfolio.client.domain.Client
- org.apache.fineract.portfolio.client.domain.ClientIdentifier
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
- org.apache.fineract.portfolio.tax.domain.TaxComponent
- org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
- org.apache.fineract.portfolio.calendar.domain.Calendar
- org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.useradministration.domain.AppUser
+
+
org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
org.apache.fineract.useradministration.domain.Permission
org.apache.fineract.useradministration.domain.AppUserClientMapping
-
- org.apache.fineract.portfolio.charge.domain.Charge
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
false
diff --git a/fineract-savings/build.gradle b/fineract-savings/build.gradle
index 7e6b6eb97..e915417d4 100644
--- a/fineract-savings/build.gradle
+++ b/fineract-savings/build.gradle
@@ -21,33 +21,53 @@ 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 }
+tasks.register('staticWeaveJpa', JavaExec) {
+ dependsOn classes
+
+ def classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/savings/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
+
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
+ classpath = sourceSets.main.runtimeClasspath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
+}
+
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
+}
+
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
+}
+
+
+
compileJava {
dependsOn ':fineract-avro-schemas:buildJavaSdk'
}
@@ -112,3 +132,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-savings/src/main/resources/META-INF/persistence.xml b/fineract-savings/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index fcd1b4aa3..000000000
--- a/fineract-savings/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,74 +0,0 @@
-
-
-
-
-
-
-
-
-
- org.eclipse.persistence.jpa.PersistenceProvider
-
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.staff.domain.Staff
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.office.domain.OrganisationCurrency
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.workingdays.domain.WorkingDays
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.group.domain.GroupRole
- org.apache.fineract.portfolio.client.domain.Client
- org.apache.fineract.portfolio.client.domain.ClientIdentifier
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.calendar.domain.Calendar
- org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.useradministration.domain.AppUser
- org.apache.fineract.useradministration.domain.Role
- org.apache.fineract.useradministration.domain.Permission
- org.apache.fineract.useradministration.domain.AppUserClientMapping
-
- org.apache.fineract.portfolio.charge.domain.Charge
-
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
- org.apache.fineract.portfolio.tax.domain.TaxComponent
- org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
- false
-
-
-
-
-
diff --git a/fineract-savings/src/main/resources/jpa/static-weaving/module/savings/persistence.xml b/fineract-savings/src/main/resources/jpa/static-weaving/module/savings/persistence.xml
new file mode 100644
index 000000000..60ec696bb
--- /dev/null
+++ b/fineract-savings/src/main/resources/jpa/static-weaving/module/savings/persistence.xml
@@ -0,0 +1,123 @@
+
+
+
+
+
+
+
+
+
+ org.eclipse.persistence.jpa.PersistenceProvider
+
+
+ org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
+ org.apache.fineract.useradministration.domain.Permission
+ org.apache.fineract.useradministration.domain.AppUserClientMapping
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.accounting.closure.domain.GLClosure
+ org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount
+ org.apache.fineract.accounting.glaccount.domain.TrialBalance
+ org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping
+ org.apache.fineract.accounting.rule.domain.AccountingRule
+ org.apache.fineract.accounting.rule.domain.AccountingTagRule
+ org.apache.fineract.accounting.journalentry.domain.JournalEntry
+
+
+
+ org.apache.fineract.portfolio.tax.domain.TaxComponent
+ org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
+ org.apache.fineract.portfolio.tax.domain.TaxGroup
+ org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+
+
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
+ org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
+
+
+ org.apache.fineract.interoperation.domain.InteropIdentifier
+ org.apache.fineract.portfolio.interestratechart.domain.InterestIncentives
+ org.apache.fineract.portfolio.interestratechart.domain.InterestRateChart
+ org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartSlab
+ org.apache.fineract.portfolio.interestratechart.domain.InterestRateChartFields
+ org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentive
+ org.apache.fineract.portfolio.savings.domain.DepositAccountInterestIncentives
+ org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChart
+ org.apache.fineract.portfolio.savings.domain.DepositAccountInterestRateChartSlabs
+ org.apache.fineract.portfolio.savings.domain.DepositAccountOnHoldTransaction
+ org.apache.fineract.portfolio.savings.domain.DepositAccountTermAndPreClosure
+ org.apache.fineract.portfolio.savings.domain.DepositProductRecurringDetail
+ org.apache.fineract.portfolio.savings.domain.DepositProductTermAndPreClosure
+ org.apache.fineract.portfolio.savings.domain.FixedDepositProduct
+ org.apache.fineract.portfolio.savings.domain.GroupSavingsIndividualMonitoring
+ org.apache.fineract.portfolio.savings.domain.RecurringDepositProduct
+ org.apache.fineract.portfolio.savings.domain.SavingsAccount
+ org.apache.fineract.portfolio.savings.domain.SavingsAccountCharge
+ org.apache.fineract.portfolio.savings.domain.SavingsAccountChargePaidBy
+ org.apache.fineract.portfolio.savings.domain.SavingsAccountTransaction
+ org.apache.fineract.portfolio.savings.domain.SavingsAccountTransactionTaxDetails
+ org.apache.fineract.portfolio.savings.domain.SavingsOfficerAssignmentHistory
+ org.apache.fineract.portfolio.savings.domain.SavingsProduct
+
+
+ org.apache.fineract.portfolio.charge.domain.Charge
+
+ false
+
+
+
+
+
diff --git a/fineract-tax/build.gradle b/fineract-tax/build.gradle
index a03a02887..170bb0c38 100644
--- a/fineract-tax/build.gradle
+++ b/fineract-tax/build.gradle
@@ -22,32 +22,50 @@ 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 classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
+ def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
+ copy {
+ from file("src/main/resources/jpa/static-weaving/module/tax/persistence.xml")
+ into "${persistenceInfo}/META-INF/"
+ }
- mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
+ mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
classpath = sourceSets.main.runtimeClasspath
- args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
+
+ args = [
+ '-persistenceinfo', persistenceInfo,
+ classesDir.absolutePath,
+ outputDir.absolutePath
+ ]
}
-staticWeaveJpa.doLast {
- delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
+
+
+tasks.register("weavedJar", Jar) {
+ archiveClassifier.set("")
+ dependsOn staticWeaveJpa
+ duplicatesStrategy = DuplicatesStrategy.EXCLUDE
+ from(layout.buildDirectory.dir("weaved-classes"))
+ exclude("META-INF/persistence.xml")
}
-tasks.named('classes') {
- finalizedBy staticWeaveJpa
+// Configure the default jar task to depend on weavedJar and use its output
+tasks.named('jar') {
+ dependsOn weavedJar
+ enabled = false // Disable the default jar task
+ // The weavedJar will be used as the primary artifact
}
-tasks.named('processResources') {
- from('src/main/resources')
- into sourceSets.main.java.classesDirectory
- outputs.upToDateWhen { false }
+// Make sure the assemble task depends on weavedJar
+tasks.named('assemble') {
+ dependsOn weavedJar
}
+
+
compileJava {
dependsOn ':fineract-avro-schemas:buildJavaSdk'
}
@@ -112,3 +130,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
}
}
}
+
+tasks.named("test") {
+ dependsOn staticWeaveJpa
+
+ def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
+ def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
+ def testResources = layout.buildDirectory.dir("resources/test").get().asFile
+
+ classpath = files(
+ weavedClasses,
+ testClasses,
+ testResources,
+ configurations.testRuntimeClasspath
+ )
+}
diff --git a/fineract-report/src/main/resources/META-INF/persistence.xml b/fineract-tax/src/main/resources/jpa/static-weaving/module/tax/persistence.xml
similarity index 81%
rename from fineract-report/src/main/resources/META-INF/persistence.xml
rename to fineract-tax/src/main/resources/jpa/static-weaving/module/tax/persistence.xml
index d3ba0d405..5a440edcc 100644
--- a/fineract-report/src/main/resources/META-INF/persistence.xml
+++ b/fineract-tax/src/main/resources/jpa/static-weaving/module/tax/persistence.xml
@@ -22,52 +22,57 @@
+ xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
org.eclipse.persistence.jpa.PersistenceProvider
-
- org.apache.fineract.accounting.glaccount.domain.GLAccount
- org.apache.fineract.accounting.journalentry.domain.JournalEntry
- org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom
- org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom
- org.apache.fineract.infrastructure.codes.domain.Code
- org.apache.fineract.infrastructure.codes.domain.CodeValue
- org.apache.fineract.infrastructure.documentmanagement.domain.Image
- org.apache.fineract.organisation.staff.domain.Staff
- org.apache.fineract.organisation.office.domain.Office
- org.apache.fineract.organisation.office.domain.OrganisationCurrency
- org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
- org.apache.fineract.organisation.holiday.domain.Holiday
- org.apache.fineract.organisation.workingdays.domain.WorkingDays
- org.apache.fineract.portfolio.group.domain.Group
- org.apache.fineract.portfolio.group.domain.GroupLevel
- org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
- org.apache.fineract.portfolio.group.domain.GroupRole
- org.apache.fineract.portfolio.client.domain.Client
- org.apache.fineract.portfolio.client.domain.ClientIdentifier
- org.apache.fineract.portfolio.rate.domain.Rate
- org.apache.fineract.portfolio.fund.domain.Fund
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
- org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
- org.apache.fineract.portfolio.paymenttype.domain.PaymentType
- org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
- org.apache.fineract.portfolio.tax.domain.TaxGroup
- org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
- org.apache.fineract.portfolio.tax.domain.TaxComponent
- org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRate
- org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod
- org.apache.fineract.portfolio.calendar.domain.Calendar
- org.apache.fineract.portfolio.calendar.domain.CalendarHistory
- org.apache.fineract.portfolio.calendar.domain.CalendarInstance
- org.apache.fineract.useradministration.domain.AppUser
+
+
org.apache.fineract.useradministration.domain.Role
+ org.apache.fineract.portfolio.fund.domain.Fund
+ org.apache.fineract.infrastructure.documentmanagement.domain.Image
+ org.apache.fineract.organisation.workingdays.domain.WorkingDays
org.apache.fineract.useradministration.domain.Permission
org.apache.fineract.useradministration.domain.AppUserClientMapping
+ org.apache.fineract.commands.domain.CommandSource
+ org.apache.fineract.useradministration.domain.AppUser
+ org.apache.fineract.accounting.glaccount.domain.GLAccount
+ org.apache.fineract.organisation.monetary.domain.OrganisationCurrency
+ org.apache.fineract.organisation.staff.domain.Staff
+ org.apache.fineract.portfolio.rate.domain.Rate
+ org.apache.fineract.organisation.monetary.domain.ApplicationCurrency
+ org.apache.fineract.portfolio.calendar.domain.CalendarInstance
+ org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail
+ org.apache.fineract.portfolio.calendar.domain.Calendar
+ org.apache.fineract.portfolio.calendar.domain.CalendarHistory
+ org.apache.fineract.portfolio.client.domain.ClientIdentifier
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket
+ org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange
+ org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory
+ org.apache.fineract.portfolio.group.domain.Group
+ org.apache.fineract.portfolio.client.domain.Client
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration
+ org.apache.fineract.portfolio.group.domain.GroupRole
+ org.apache.fineract.portfolio.paymenttype.domain.PaymentType
+ org.apache.fineract.portfolio.group.domain.GroupLevel
+ org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent
+ org.apache.fineract.organisation.office.domain.Office
+ org.apache.fineract.organisation.holiday.domain.Holiday
+ org.apache.fineract.infrastructure.cache.domain.PlatformCache
+ org.apache.fineract.infrastructure.codes.domain.Code
+ org.apache.fineract.infrastructure.businessdate.domain.BusinessDate
+ org.apache.fineract.infrastructure.codes.domain.CodeValue
+
+
+ org.apache.fineract.portfolio.tax.domain.TaxComponent
+ org.apache.fineract.portfolio.tax.domain.TaxComponentHistory
+ org.apache.fineract.portfolio.tax.domain.TaxGroup
+ org.apache.fineract.portfolio.tax.domain.TaxGroupMappings
+
false