Skip to content

Commit 20efc40

Browse files
committed
FINERACT-2181: Some tweaks in the gradle build to ensure correct task processing
1 parent 4d56a4f commit 20efc40

File tree

37 files changed

+1852
-753
lines changed

37 files changed

+1852
-753
lines changed

build.gradle

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -365,10 +365,6 @@ configure(project.fineractJavaProjects) {
365365
withJavadocJar()
366366
}
367367

368-
tasks.withType(ProcessResources).configureEach {
369-
destinationDir = layout.buildDirectory.dir('classes/java/main').get().asFile
370-
}
371-
372368
// Add performance optimizations
373369
configurations.configureEach {
374370
resolutionStrategy {

custom/docker/build.gradle

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,6 @@ jib {
5858
allowInsecureRegistries = true
5959

6060
dependencies {
61-
implementation project(':fineract-core')
6261
implementation project(':fineract-provider')
6362
// NOTE: dynamically load all custom modules
6463
file("${rootDir}/custom").eachDir { companyDir ->

fineract-accounting/build.gradle

Lines changed: 45 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,32 +22,48 @@ apply plugin: 'java'
2222
apply plugin: 'eclipse'
2323

2424
tasks.register('staticWeaveJpa', JavaExec) {
25-
group = "build"
26-
description = "Performs EclipseLink static weaving of entity classes"
27-
2825
dependsOn classes
2926

30-
def classesDir = file("$buildDir/classes/java/main")
27+
def classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
28+
def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
29+
def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
30+
copy {
31+
from file("src/main/resources/jpa/static-weaving/module/accounting/persistence.xml")
32+
into "${persistenceInfo}/META-INF/"
33+
}
3134

32-
mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
35+
mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
3336
classpath = sourceSets.main.runtimeClasspath
34-
args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
37+
38+
args = [
39+
'-persistenceinfo', persistenceInfo,
40+
classesDir.absolutePath,
41+
outputDir.absolutePath
42+
]
3543
}
3644

37-
staticWeaveJpa.doLast {
38-
delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
45+
tasks.register("weavedJar", Jar) {
46+
archiveClassifier.set("")
47+
dependsOn staticWeaveJpa
48+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
49+
from(layout.buildDirectory.dir("weaved-classes"))
50+
exclude("META-INF/persistence.xml")
3951
}
4052

41-
tasks.named('classes') {
42-
finalizedBy staticWeaveJpa
53+
// Configure the default jar task to depend on weavedJar and use its output
54+
tasks.named('jar') {
55+
dependsOn weavedJar
56+
enabled = false // Disable the default jar task
57+
// The weavedJar will be used as the primary artifact
4358
}
4459

45-
tasks.named('processResources') {
46-
from('src/main/resources')
47-
into sourceSets.main.java.classesDirectory
48-
outputs.upToDateWhen { false }
60+
// Make sure the assemble task depends on weavedJar
61+
tasks.named('assemble') {
62+
dependsOn weavedJar
4963
}
5064

65+
66+
5167
compileJava {
5268
dependsOn ':fineract-avro-schemas:buildJavaSdk'
5369
}
@@ -106,3 +122,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
106122
}
107123
}
108124
}
125+
126+
tasks.named("test") {
127+
dependsOn staticWeaveJpa
128+
129+
def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
130+
def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
131+
def testResources = layout.buildDirectory.dir("resources/test").get().asFile
132+
133+
classpath = files(
134+
weavedClasses,
135+
testClasses,
136+
testResources,
137+
configurations.testRuntimeClasspath
138+
)
139+
}

fineract-accounting/src/main/resources/META-INF/persistence.xml

Lines changed: 0 additions & 51 deletions
This file was deleted.

fineract-loan/src/main/resources/META-INF/persistence.xml renamed to fineract-accounting/src/main/resources/jpa/static-weaving/module/accounting/persistence.xml

Lines changed: 48 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -22,56 +22,69 @@
2222

2323

2424
<persistence version="2.0"
25-
xmlns="http://java.sun.com/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
26-
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
25+
xmlns="http://java.sun.com/xml/ns/persistence"
26+
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
27+
xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_2_0.xsd">
2728

2829
<!-- This file is only used for static weaving, nothing more. -->
2930
<!-- You can find the runtime configuration in the JPAConfig class -->
3031
<persistence-unit name="jpa-pu" transaction-type="RESOURCE_LOCAL">
3132
<provider>org.eclipse.persistence.jpa.PersistenceProvider</provider>
32-
<!-- Fineract core module -->
33-
<class>org.apache.fineract.accounting.glaccount.domain.GLAccount</class>
34-
<class>org.apache.fineract.accounting.journalentry.domain.JournalEntry</class>
35-
<class>org.apache.fineract.infrastructure.core.domain.AbstractPersistableCustom</class>
36-
<class>org.apache.fineract.infrastructure.core.domain.AbstractAuditableWithUTCDateTimeCustom</class>
37-
<class>org.apache.fineract.infrastructure.codes.domain.Code</class>
38-
<class>org.apache.fineract.infrastructure.codes.domain.CodeValue</class>
33+
34+
<!-- Core Module Entities -->
35+
<class>org.apache.fineract.useradministration.domain.Role</class>
36+
<class>org.apache.fineract.portfolio.fund.domain.Fund</class>
3937
<class>org.apache.fineract.infrastructure.documentmanagement.domain.Image</class>
40-
<class>org.apache.fineract.organisation.staff.domain.Staff</class>
41-
<class>org.apache.fineract.organisation.office.domain.Office</class>
38+
<class>org.apache.fineract.organisation.workingdays.domain.WorkingDays</class>
39+
<class>org.apache.fineract.useradministration.domain.Permission</class>
40+
<class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
41+
<class>org.apache.fineract.commands.domain.CommandSource</class>
42+
<class>org.apache.fineract.useradministration.domain.AppUser</class>
43+
<class>org.apache.fineract.accounting.glaccount.domain.GLAccount</class>
4244
<class>org.apache.fineract.organisation.monetary.domain.OrganisationCurrency</class>
45+
<class>org.apache.fineract.organisation.staff.domain.Staff</class>
46+
<class>org.apache.fineract.portfolio.rate.domain.Rate</class>
4347
<class>org.apache.fineract.organisation.monetary.domain.ApplicationCurrency</class>
44-
<class>org.apache.fineract.organisation.holiday.domain.Holiday</class>
45-
<class>org.apache.fineract.organisation.workingdays.domain.WorkingDays</class>
46-
<class>org.apache.fineract.portfolio.group.domain.Group</class>
47-
<class>org.apache.fineract.portfolio.group.domain.GroupLevel</class>
48-
<class>org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory</class>
49-
<class>org.apache.fineract.portfolio.group.domain.GroupRole</class>
50-
<class>org.apache.fineract.portfolio.client.domain.Client</class>
48+
<class>org.apache.fineract.portfolio.calendar.domain.CalendarInstance</class>
49+
<class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
50+
<class>org.apache.fineract.portfolio.calendar.domain.Calendar</class>
51+
<class>org.apache.fineract.portfolio.calendar.domain.CalendarHistory</class>
5152
<class>org.apache.fineract.portfolio.client.domain.ClientIdentifier</class>
52-
<class>org.apache.fineract.portfolio.rate.domain.Rate</class>
53-
<class>org.apache.fineract.portfolio.fund.domain.Fund</class>
5453
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyBucket</class>
5554
<class>org.apache.fineract.portfolio.delinquency.domain.DelinquencyRange</class>
55+
<class>org.apache.fineract.portfolio.group.domain.StaffAssignmentHistory</class>
56+
<class>org.apache.fineract.portfolio.group.domain.Group</class>
57+
<class>org.apache.fineract.portfolio.client.domain.Client</class>
58+
<class>org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEventConfiguration</class>
59+
<class>org.apache.fineract.portfolio.group.domain.GroupRole</class>
5660
<class>org.apache.fineract.portfolio.paymenttype.domain.PaymentType</class>
57-
<class>org.apache.fineract.portfolio.paymentdetail.domain.PaymentDetail</class>
58-
<class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRate</class>
59-
<class>org.apache.fineract.portfolio.floatingrates.domain.FloatingRatePeriod</class>
60-
<class>org.apache.fineract.portfolio.calendar.domain.Calendar</class>
61-
<class>org.apache.fineract.portfolio.calendar.domain.CalendarHistory</class>
62-
<class>org.apache.fineract.portfolio.calendar.domain.CalendarInstance</class>
63-
<class>org.apache.fineract.useradministration.domain.AppUser</class>
64-
<class>org.apache.fineract.useradministration.domain.Role</class>
65-
<class>org.apache.fineract.useradministration.domain.Permission</class>
66-
<class>org.apache.fineract.useradministration.domain.AppUserClientMapping</class>
67-
<!-- Fineract Charge module -->
61+
<class>org.apache.fineract.portfolio.group.domain.GroupLevel</class>
62+
<class>org.apache.fineract.infrastructure.event.external.repository.domain.ExternalEvent</class>
63+
<class>org.apache.fineract.organisation.office.domain.Office</class>
64+
<class>org.apache.fineract.organisation.holiday.domain.Holiday</class>
65+
<class>org.apache.fineract.infrastructure.cache.domain.PlatformCache</class>
66+
<class>org.apache.fineract.infrastructure.codes.domain.Code</class>
67+
<class>org.apache.fineract.infrastructure.businessdate.domain.BusinessDate</class>
68+
<class>org.apache.fineract.infrastructure.codes.domain.CodeValue</class>
69+
70+
<!-- Accounting Module Entities -->
71+
<class>org.apache.fineract.accounting.closure.domain.GLClosure</class>
72+
<class>org.apache.fineract.accounting.financialactivityaccount.domain.FinancialActivityAccount</class>
73+
<class>org.apache.fineract.accounting.glaccount.domain.TrialBalance</class>
74+
<class>org.apache.fineract.accounting.producttoaccountmapping.domain.ProductToGLAccountMapping</class>
75+
<class>org.apache.fineract.accounting.rule.domain.AccountingRule</class>
76+
<class>org.apache.fineract.accounting.rule.domain.AccountingTagRule</class>
77+
<class>org.apache.fineract.accounting.journalentry.domain.JournalEntry</class>
78+
79+
<!-- Charge Module Entities -->
6880
<class>org.apache.fineract.portfolio.charge.domain.Charge</class>
69-
<!-- Fineract Tax module -->
70-
<class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
71-
<class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
81+
82+
<!-- Tax Module Entities -->
7283
<class>org.apache.fineract.portfolio.tax.domain.TaxComponent</class>
7384
<class>org.apache.fineract.portfolio.tax.domain.TaxComponentHistory</class>
74-
<class>org.apache.fineract.portfolio.loanaccount.domain.LoanStatusConverter</class>
85+
<class>org.apache.fineract.portfolio.tax.domain.TaxGroup</class>
86+
<class>org.apache.fineract.portfolio.tax.domain.TaxGroupMappings</class>
87+
7588
<exclude-unlisted-classes>false</exclude-unlisted-classes>
7689
<properties>
7790
<property name="eclipselink.weaving" value="static" />

fineract-avro-schemas/build.gradle

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -132,8 +132,4 @@ tasks.named('sourcesJar') {
132132
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
133133
}
134134

135-
tasks.named('processResources') {
136-
from('src/main/resources')
137-
into sourceSets.main.java.classesDirectory
138-
outputs.upToDateWhen { false }
139-
}
135+

fineract-branch/build.gradle

Lines changed: 47 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -22,32 +22,50 @@ apply plugin: 'java'
2222
apply plugin: 'eclipse'
2323

2424
tasks.register('staticWeaveJpa', JavaExec) {
25-
group = "build"
26-
description = "Performs EclipseLink static weaving of entity classes"
27-
2825
dependsOn classes
2926

30-
def classesDir = file("$buildDir/classes/java/main")
27+
def classesDir = layout.buildDirectory.dir("classes/java/main").get().asFile
28+
def outputDir = layout.buildDirectory.dir("weaved-classes").get().asFile
29+
def persistenceInfo = layout.buildDirectory.dir('static-weaving').get()
30+
copy {
31+
from file("src/main/resources/jpa/static-weaving/module/branch/persistence.xml")
32+
into "${persistenceInfo}/META-INF/"
33+
}
3134

32-
mainClass.set('org.eclipse.persistence.tools.weaving.jpa.StaticWeave')
35+
mainClass.set("org.eclipse.persistence.tools.weaving.jpa.StaticWeave")
3336
classpath = sourceSets.main.runtimeClasspath
34-
args '-persistenceinfo', classesDir.absolutePath, classesDir.absolutePath, classesDir.absolutePath
37+
38+
args = [
39+
'-persistenceinfo', persistenceInfo,
40+
classesDir.absolutePath,
41+
outputDir.absolutePath
42+
]
3543
}
3644

37-
staticWeaveJpa.doLast {
38-
delete "${sourceSets.main.output.classesDirs.asPath}/META-INF/persistence.xml"
45+
46+
47+
tasks.register("weavedJar", Jar) {
48+
archiveClassifier.set("")
49+
dependsOn staticWeaveJpa
50+
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
51+
from(layout.buildDirectory.dir("weaved-classes"))
52+
exclude("META-INF/persistence.xml")
3953
}
4054

41-
tasks.named('classes') {
42-
finalizedBy staticWeaveJpa
55+
// Configure the default jar task to depend on weavedJar and use its output
56+
tasks.named('jar') {
57+
dependsOn weavedJar
58+
enabled = false // Disable the default jar task
59+
// The weavedJar will be used as the primary artifact
4360
}
4461

45-
tasks.named('processResources') {
46-
from('src/main/resources')
47-
into sourceSets.main.java.classesDirectory
48-
outputs.upToDateWhen { false }
62+
// Make sure the assemble task depends on weavedJar
63+
tasks.named('assemble') {
64+
dependsOn weavedJar
4965
}
5066

67+
68+
5169
compileJava {
5270
dependsOn ':fineract-avro-schemas:buildJavaSdk'
5371
}
@@ -112,3 +130,18 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
112130
}
113131
}
114132
}
133+
134+
tasks.named("test") {
135+
dependsOn staticWeaveJpa
136+
137+
def testClasses = layout.buildDirectory.dir("classes/java/test").get().asFile
138+
def weavedClasses = layout.buildDirectory.dir("weaved-classes").get().asFile
139+
def testResources = layout.buildDirectory.dir("resources/test").get().asFile
140+
141+
classpath = files(
142+
weavedClasses,
143+
testClasses,
144+
testResources,
145+
configurations.testRuntimeClasspath
146+
)
147+
}

0 commit comments

Comments
 (0)