FINERACT-1189: fineract client as a separate module
This commit is contained in:
committed by
Michael Vorburger ⛑️
parent
9c67117f3d
commit
ca80ecb46e
+1
-1
@@ -72,6 +72,6 @@ script:
|
|||||||
# using "&&" instead of several "-" means that integrationTest does not run if test fails,
|
# using "&&" instead of several "-" means that integrationTest does not run if test fails,
|
||||||
# and Docker test does not run if integration test fails, which makes PR failure easier to understand.
|
# and Docker test does not run if integration test fails, which makes PR failure easier to understand.
|
||||||
# @see https://docs.travis-ci.com/user/job-lifecycle/#customizing-the-build-phase
|
# @see https://docs.travis-ci.com/user/job-lifecycle/#customizing-the-build-phase
|
||||||
- ./gradlew --console=plain -PautomatedBuild=true licenseMain licenseTest licenseIntegrationTest check && ./gradlew --console=plain -PautomatedBuild=true integrationTest --fail-fast && sudo service mysql stop && docker-compose build && docker-compose up -d && sleep 60s && curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health && (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/info | wc --chars) > 100 )) && ./gradlew generateSwaggerCode && cd fineract-provider/build/swagger-code-fineract && mvn test
|
- ./gradlew --console=plain -PautomatedBuild=true licenseMain licenseTest licenseIntegrationTest check && ./gradlew --console=plain -PautomatedBuild=true integrationTest --fail-fast && sudo service mysql stop && docker-compose build && docker-compose up -d && sleep 60s && curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/health && (( $(curl -f -k --retry 5 --retry-connrefused --connect-timeout 30 --retry-delay 30 https://localhost:8443/fineract-provider/actuator/info | wc --chars) > 100 ))
|
||||||
# We stop the mysql system service when running the Docker test to avoid port 3306 conflicts (unless we run the mysql in docker-compose on another port; req. FINERACT-773)
|
# We stop the mysql system service when running the Docker test to avoid port 3306 conflicts (unless we run the mysql in docker-compose on another port; req. FINERACT-773)
|
||||||
# The fancy /actuator/info test makes sure that has more than 100 characters of JSON to test that the git.properties worked (see FINERACT-983)
|
# The fancy /actuator/info test makes sure that has more than 100 characters of JSON to test that the git.properties worked (see FINERACT-983)
|
||||||
|
|||||||
+364
-44
@@ -20,6 +20,16 @@
|
|||||||
buildscript {
|
buildscript {
|
||||||
ext {
|
ext {
|
||||||
jacocoVersion = '0.8.5'
|
jacocoVersion = '0.8.5'
|
||||||
|
retrofitVersion = '2.9.0'
|
||||||
|
okhttpVersion = '4.7.2'
|
||||||
|
oltuVersion = '1.0.1'
|
||||||
|
fineractJavaProjects = subprojects.findAll{
|
||||||
|
[
|
||||||
|
'fineract-provider',
|
||||||
|
'fineract-client'
|
||||||
|
].contains(it.name)
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
repositories {
|
repositories {
|
||||||
jcenter()
|
jcenter()
|
||||||
@@ -30,22 +40,22 @@ buildscript {
|
|||||||
classpath 'com.bmuschko:gradle-cargo-plugin:2.7.1'
|
classpath 'com.bmuschko:gradle-cargo-plugin:2.7.1'
|
||||||
classpath 'org.zeroturnaround:gradle-jrebel-plugin:1.1.10'
|
classpath 'org.zeroturnaround:gradle-jrebel-plugin:1.1.10'
|
||||||
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.3.4.RELEASE'
|
classpath 'org.springframework.boot:spring-boot-gradle-plugin:2.3.4.RELEASE'
|
||||||
classpath 'gradle.plugin.com.hierynomus.gradle.plugins:license-gradle-plugin:0.15.0'
|
|
||||||
classpath 'org.apache.openjpa:openjpa:3.1.2' // when upgrading, also change OpenJPA version repeated in fineract-provider/build.gradle!
|
classpath 'org.apache.openjpa:openjpa:3.1.2' // when upgrading, also change OpenJPA version repeated in fineract-provider/build.gradle!
|
||||||
classpath 'com.radcortez.gradle:openjpa-gradle-plugin:3.1.0'
|
classpath 'com.radcortez.gradle:openjpa-gradle-plugin:3.1.0'
|
||||||
classpath 'org.nosphere.apache:creadur-rat-gradle:0.7.0'
|
|
||||||
classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.5.1"
|
classpath "gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.5.1"
|
||||||
classpath "gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0"
|
classpath "gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0"
|
||||||
classpath "gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:2.2.3"
|
classpath "gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:2.2.3"
|
||||||
classpath "net.ltgt.gradle:gradle-errorprone-plugin:1.2.1"
|
classpath "net.ltgt.gradle:gradle-errorprone-plugin:1.2.1"
|
||||||
classpath "io.swagger.core.v3:swagger-gradle-plugin:2.1.5"
|
classpath "io.swagger.core.v3:swagger-gradle-plugin:2.1.5"
|
||||||
classpath "gradle.plugin.org.hidetake:gradle-swagger-generator-plugin:2.18.2"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
plugins {
|
plugins {
|
||||||
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
|
id 'io.spring.dependency-management' version '1.0.10.RELEASE'
|
||||||
id 'com.diffplug.spotless' version '5.6.1'
|
id 'com.diffplug.spotless' version '5.6.1' apply false
|
||||||
|
id 'org.nosphere.apache.rat' version '0.7.0' apply false
|
||||||
|
id 'com.github.hierynomus.license' version '0.15.0' apply false
|
||||||
|
id 'org.openapi.generator' version '4.3.1' apply false
|
||||||
}
|
}
|
||||||
|
|
||||||
description = '''\
|
description = '''\
|
||||||
@@ -63,14 +73,136 @@ allprojects {
|
|||||||
}
|
}
|
||||||
|
|
||||||
apply plugin: 'io.spring.dependency-management'
|
apply plugin: 'io.spring.dependency-management'
|
||||||
apply plugin: "com.diffplug.spotless"
|
apply plugin: 'com.diffplug.spotless'
|
||||||
|
apply plugin: 'com.github.hierynomus.license'
|
||||||
|
apply plugin: 'org.nosphere.apache.rat'
|
||||||
|
|
||||||
|
// Configuration for the dependency management plugin
|
||||||
|
// https://github.com/spring-gradle-plugins/dependency-management-plugin
|
||||||
|
dependencyManagement {
|
||||||
|
imports {
|
||||||
|
mavenBom 'org.springframework:spring-framework-bom:5.2.9.RELEASE'
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencies {
|
||||||
|
// We use fixed versions, instead of inheriting them from the Spring BOM, to be able to be on more recent ones.
|
||||||
|
// We do not use :+ to get the latest available version available on Maven Central, as that could suddenly break things.
|
||||||
|
// We use the Renovate Bot to automatically propose Pull Requests (PRs) when upgrades for all of these versions are available.
|
||||||
|
|
||||||
|
dependency 'org.springframework.security.oauth:spring-security-oauth2:2.5.0.RELEASE'
|
||||||
|
dependency 'org.apache.openjpa:openjpa:3.1.2' // when upgrading, also change OpenJPA version repeated above in buildscript!
|
||||||
|
dependency 'com.squareup.retrofit:retrofit:1.9.0'
|
||||||
|
dependency 'com.squareup.okhttp:okhttp:2.7.5'
|
||||||
|
dependency 'com.squareup.okhttp:okhttp-urlconnection:2.7.5'
|
||||||
|
dependency 'com.google.guava:guava:30.0-jre'
|
||||||
|
dependency 'com.google.code.gson:gson:2.8.6'
|
||||||
|
dependency 'org.apache.commons:commons-email:1.5'
|
||||||
|
dependency 'commons-io:commons-io:2.8.0'
|
||||||
|
dependency 'org.drizzle.jdbc:drizzle-jdbc:1.4'
|
||||||
|
dependency 'com.github.librepdf:openpdf:1.3.22'
|
||||||
|
dependency 'org.mnode.ical4j:ical4j:3.0.20'
|
||||||
|
dependency 'org.quartz-scheduler:quartz:2.3.2'
|
||||||
|
dependency 'com.amazonaws:aws-java-sdk-s3:1.11.874'
|
||||||
|
dependency 'org.ehcache:ehcache:3.9.0'
|
||||||
|
dependency 'com.github.spullara.mustache.java:compiler:0.9.6'
|
||||||
|
dependency 'com.jayway.jsonpath:json-path:2.4.0'
|
||||||
|
dependency 'org.apache.tika:tika-core:1.24.1'
|
||||||
|
dependency 'org.apache.httpcomponents:httpclient:4.5.13'
|
||||||
|
dependency 'io.swagger.core.v3:swagger-annotations:2.1.5'
|
||||||
|
dependency 'jakarta.management.j2ee:jakarta.management.j2ee-api:1.1.4'
|
||||||
|
dependency 'jakarta.jms:jakarta.jms-api:2.0.3'
|
||||||
|
dependency 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.3'
|
||||||
|
dependency 'jakarta.validation:jakarta.validation-api:3.0.0'
|
||||||
|
dependency 'org.apache.activemq:activemq-broker:5.16.0'
|
||||||
|
dependency 'org.apache.bval:org.apache.bval.bundle:2.0.4'
|
||||||
|
dependency 'org.mockito:mockito-core:3.5.13'
|
||||||
|
dependency 'org.mockito:mockito-junit-jupiter:3.5.13'
|
||||||
|
dependency 'io.github.classgraph:classgraph:4.8.90'
|
||||||
|
dependency 'org.awaitility:awaitility:4.0.3'
|
||||||
|
dependency 'com.github.spotbugs:spotbugs-annotations:4.1.4'
|
||||||
|
dependency 'javax.cache:cache-api:1.1.1'
|
||||||
|
dependency 'org.mock-server:mockserver-junit-jupiter:5.11.1'
|
||||||
|
dependency 'org.webjars.npm:swagger-ui-dist:3.35.2'
|
||||||
|
dependency 'org.webjars:webjars-locator-core:0.46'
|
||||||
|
|
||||||
|
// fineract client dependencies
|
||||||
|
dependency "com.squareup.retrofit2:retrofit:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:retrofit-mock:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:adapter-java8:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:adapter-rxjava2:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:adapter-rxjava3:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:adapter-guava:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:converter-wire:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:converter-jackson:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:converter-simplexml:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:converter-jaxb:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:converter-java8:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:converter-scalars:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:converter-gson:$retrofitVersion"
|
||||||
|
dependency "com.squareup.retrofit2:converter-protobuf:$retrofitVersion"
|
||||||
|
dependency "org.apache.oltu.oauth2:org.apache.oltu.oauth2.common:$oltuVersion"
|
||||||
|
dependency "org.apache.oltu.oauth2:org.apache.oltu.oauth2.client:$oltuVersion"
|
||||||
|
dependency "org.apache.oltu.oauth2:org.apache.oltu.oauth2.httpclient4:$oltuVersion"
|
||||||
|
dependency "com.squareup.okhttp3:okhttp:$okhttpVersion"
|
||||||
|
dependency "com.squareup.okhttp3:okcurl:$okhttpVersion"
|
||||||
|
dependency "com.squareup.okhttp3:logging-interceptor:$okhttpVersion"
|
||||||
|
dependency "com.squareup.okhttp3:okhttp-apache:$okhttpVersion"
|
||||||
|
dependency "com.squareup.okhttp3:okhttp-android-support:$okhttpVersion"
|
||||||
|
dependency "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion"
|
||||||
|
dependency "com.squareup.okhttp3:okhttp-sse:$okhttpVersion"
|
||||||
|
dependency "io.gsonfire:gson-fire:1.8.0"
|
||||||
|
dependency "org.threeten:threetenbp:1.4.1"
|
||||||
|
dependency "io.swagger:swagger-core:1.6.1"
|
||||||
|
dependency "io.swagger:swagger-annotations:1.6.1"
|
||||||
|
dependency "javax.annotation:javax.annotation-api:1.3.2"
|
||||||
|
dependency "com.google.code.findbugs:jsr305:3.0.2"
|
||||||
|
dependency "commons-codec:commons-codec:1.14"
|
||||||
|
|
||||||
|
dependency ('org.flywaydb:flyway-core:7.0.0') {
|
||||||
|
// https://issues.apache.org/jira/browse/FINERACT-1172
|
||||||
|
// https://github.com/apache/fineract/pull/1355
|
||||||
|
// https://github.com/flyway/flyway/issues/2957
|
||||||
|
// exclude conflicting non-<optional> dependencies from https://github.com/flyway/flyway/blob/master/flyway-core/pom.xml
|
||||||
|
exclude 'software.amazon.awssdk:s3'
|
||||||
|
}
|
||||||
|
|
||||||
|
dependency ('org.dom4j:dom4j:2.1.3') {
|
||||||
|
exclude 'relaxngDatatype:relaxngDatatype' // already in com.sun.xml.bind:jaxb-osgi:2.3.0.1
|
||||||
|
// FINERACT-940 && FINERACT-966 https://github.com/spotbugs/spotbugs/issues/1128
|
||||||
|
exclude 'xpp3:xpp3'
|
||||||
|
exclude 'pull-parser:pull-parser'
|
||||||
|
}
|
||||||
|
|
||||||
|
dependencySet(group: 'com.sun.jersey', version: jerseyVersion) {
|
||||||
|
entry 'jersey-core'
|
||||||
|
entry 'jersey-servlet'
|
||||||
|
entry 'jersey-server'
|
||||||
|
entry 'jersey-json'
|
||||||
|
}
|
||||||
|
dependencySet(group: 'com.sun.jersey.contribs', version: jerseyVersion) {
|
||||||
|
entry 'jersey-spring'
|
||||||
|
entry 'jersey-multipart'
|
||||||
|
}
|
||||||
|
dependencySet(group: 'org.apache.poi', version: '4.1.2') {
|
||||||
|
entry 'poi'
|
||||||
|
entry 'poi-ooxml'
|
||||||
|
entry 'poi-ooxml-schemas'
|
||||||
|
}
|
||||||
|
dependencySet(group: 'io.rest-assured', version: '4.3.0')
|
||||||
|
{
|
||||||
|
entry 'rest-assured'
|
||||||
|
entry 'json-path'
|
||||||
|
entry 'xml-path'
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Configuration for the spotless plugin
|
// Configuration for the spotless plugin
|
||||||
// https://github.com/diffplug/spotless/tree/main/plugin-gradle
|
// https://github.com/diffplug/spotless/tree/main/plugin-gradle
|
||||||
spotless {
|
spotless {
|
||||||
format 'misc', {
|
format 'misc', {
|
||||||
target '**/*.md', '**/*.properties', '**/.gitignore', '**/*.yml', '**/*.xml', '**/**.json', '**/*.sql'
|
target '**/*.md', '**/*.properties', '**/.gitignore', '**/*.yml', '**/*.xml', '**/**.json', '**/*.sql'
|
||||||
targetExclude '**/build/**', '**/bin/**', '**/.settings/**', '**/.idea/**', '**/.gradle/**'
|
targetExclude '**/build/**', '**/bin/**', '**/.settings/**', '**/.idea/**', '**/.gradle/**', '**/gradlew.bat'
|
||||||
indentWithSpaces(4)
|
indentWithSpaces(4)
|
||||||
endWithNewline()
|
endWithNewline()
|
||||||
trimTrailingWhitespace()
|
trimTrailingWhitespace()
|
||||||
@@ -85,51 +217,239 @@ allprojects {
|
|||||||
trimTrailingWhitespace()
|
trimTrailingWhitespace()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (plugins.hasPlugin('java')) {
|
lineEndings 'UNIX'
|
||||||
java {
|
}
|
||||||
targetExclude '**/build/**', '**/bin/**', '**/out/**'
|
|
||||||
importOrder() //sort imports alphabetically
|
|
||||||
removeUnusedImports()
|
|
||||||
eclipse().configFile "$rootDir/config/fineractdev-formatter.xml"
|
|
||||||
endWithNewline()
|
|
||||||
trimTrailingWhitespace()
|
|
||||||
|
|
||||||
// Enforce style modifier order
|
// Configuration for Gradle license plug-in
|
||||||
custom 'Modifier ordering', {
|
// https://github.com/hierynomus/license-gradle-plugin
|
||||||
def modifierRanking = [
|
license {
|
||||||
public : 1,
|
header rootProject.file("$rootDir/APACHE_LICENSETEXT.md")
|
||||||
protected : 2,
|
excludes([
|
||||||
private : 3,
|
"**/gradlew*",
|
||||||
abstract : 4,
|
"**/git.properties",
|
||||||
default : 5,
|
"**/*.html",
|
||||||
static : 6,
|
"**/*.mustache",
|
||||||
final : 7,
|
"**/package-info.java",
|
||||||
transient : 8,
|
"**/keystore.jks",
|
||||||
volatile : 9,
|
"**/static/swagger-ui/**",
|
||||||
synchronized: 10,
|
"**/api-docs/**",
|
||||||
native : 11,
|
])
|
||||||
strictfp : 12]
|
strictCheck true
|
||||||
// Find any instance of multiple modifiers. Lead with a non-word character to avoid
|
}
|
||||||
// accidental matching against for instance, "an alternative default value"
|
|
||||||
it.replaceAll(/\W(?:public |protected |private |abstract |default |static |final |transient |volatile |synchronized |native |strictfp ){2,}/, {
|
task licenseFormatBuildScripts (type:nl.javadude.gradle.plugins.license.License) {
|
||||||
// Do not replace the leading non-word character. Identify the modifiers
|
source = fileTree(dir: "$rootDir/", includes: [
|
||||||
it.replaceAll(/(?:public |protected |private |abstract |default |static |final |transient |volatile |synchronized |native |strictfp ){2,}/, {
|
'**/*.bat',
|
||||||
// Sort the modifiers according to the ranking above
|
'**/*.sh',
|
||||||
it.split().sort({ modifierRanking[it] }).join(' ') + ' '
|
'**/*.sql'
|
||||||
}
|
], excludes: [
|
||||||
)
|
'**/gradlew*'
|
||||||
|
])
|
||||||
|
}
|
||||||
|
licenseFormat.dependsOn licenseFormatBuildScripts
|
||||||
|
|
||||||
|
// Configuration for Apache Release Audit Tool task
|
||||||
|
// https://github.com/eskatos/creadur-rat-gradle
|
||||||
|
rat {
|
||||||
|
verbose = false
|
||||||
|
reportDir = file("$buildDir/reports/rat")
|
||||||
|
excludes = [
|
||||||
|
'**/src/main/templates/**/*.mustache',
|
||||||
|
'**/.dockerignore',
|
||||||
|
'**/*.launch',
|
||||||
|
'**/licenses/**',
|
||||||
|
'**/*.md',
|
||||||
|
'**/*.github/**',
|
||||||
|
'**/MANIFEST.MF',
|
||||||
|
'**/*.json',
|
||||||
|
'**/*.json.template',
|
||||||
|
'**/*.txt',
|
||||||
|
'**/*.log',
|
||||||
|
'**/fineractdev-eclipse-preferences.epf',
|
||||||
|
'**/template-expected.html',
|
||||||
|
'**/template.mustache',
|
||||||
|
'**/.classpath',
|
||||||
|
'**/.project',
|
||||||
|
'**/.idea/**',
|
||||||
|
'**/*.ipr',
|
||||||
|
'**/*.iws',
|
||||||
|
'**/.settings/**',
|
||||||
|
'**/bin/**',
|
||||||
|
'**/.git/**',
|
||||||
|
'**/.gitignore',
|
||||||
|
'**/.gitkeep',
|
||||||
|
'**/*.iml',
|
||||||
|
'**/config/swagger/templates/**',
|
||||||
|
// Notice files
|
||||||
|
'**/NOTICE_RELEASE',
|
||||||
|
'**/NOTICE_SOURCE',
|
||||||
|
// Swagger License
|
||||||
|
'**/src/main/resources/static/swagger-ui/**',
|
||||||
|
// gradle
|
||||||
|
'**/.gradle/**',
|
||||||
|
'**/gradlew',
|
||||||
|
'**/gradlew.bat',
|
||||||
|
'**/gradle/wrapper/gradle-wrapper.properties',
|
||||||
|
'**/caches/**',
|
||||||
|
'**/daemon/**',
|
||||||
|
'**/native/**',
|
||||||
|
'**/wrapper/**',
|
||||||
|
'**/build/**',
|
||||||
|
// Api Docs
|
||||||
|
'**/api-docs/*.*',
|
||||||
|
'**/docs/system-architecture/.htaccess',
|
||||||
|
'**/docs/system-architecture/404.html',
|
||||||
|
'**/docs/system-architecture/index.html',
|
||||||
|
'**/docs/system-architecture/**/*.xml',
|
||||||
|
'**/bootstrap-3.0.0/assets/application.js',
|
||||||
|
'**/system-architecture/js/plugins.js',
|
||||||
|
// Apache License
|
||||||
|
'**/bootstrap-3.0.0/assets/less.js',
|
||||||
|
'**/css/bootstrap-3.0.0/**/*.*',
|
||||||
|
// Public Domain See http://www.JSON.org/js.html
|
||||||
|
'**/bootstrap-3.0.0/assets/json2.js.htm',
|
||||||
|
// MIT License
|
||||||
|
'**/modernizr-2.6.2.min.js',
|
||||||
|
'**/css/normalize.css',
|
||||||
|
'**/assets/filesaver.js',
|
||||||
|
'**/css/fonts/glyphicons-halflings-regular.svg',
|
||||||
|
'**/assets/jszip.js',
|
||||||
|
'**/assets/jquery.js',
|
||||||
|
'**/api-docs/jquery-1.7.min.js',
|
||||||
|
'**/css/toc-0.1.2/**/*.*',
|
||||||
|
'**/docs/system-architecture/css/main.css',
|
||||||
|
'**/system-architecture/js/vendor/jquery-1.9.1.min.js',
|
||||||
|
'**/system-architecture/js/vendor/toc-0.1.2/jquery.toc.min.js',
|
||||||
|
'**/assets/respond.min.js',
|
||||||
|
'**/assets/html5shiv.js',
|
||||||
|
// BSD License
|
||||||
|
'**/assets/uglify.js',
|
||||||
|
// Ignore out folder
|
||||||
|
'**/out/**',
|
||||||
|
// Git build info
|
||||||
|
"**/git.properties",
|
||||||
|
]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
configure(project.fineractJavaProjects) {
|
||||||
|
// NOTE: order matters!
|
||||||
|
|
||||||
|
apply plugin: 'java-library'
|
||||||
|
apply plugin: 'idea'
|
||||||
|
|
||||||
|
/* define the valid syntax level for source files */
|
||||||
|
sourceCompatibility = JavaVersion.VERSION_11
|
||||||
|
/* define binary compatibility version */
|
||||||
|
targetCompatibility = JavaVersion.VERSION_11
|
||||||
|
|
||||||
|
/* http://stackoverflow.com/questions/19653311/jpa-repository-works-in-idea-and-production-but-not-in-gradle */
|
||||||
|
sourceSets.main.output.resourcesDir = sourceSets.main.java.outputDir
|
||||||
|
sourceSets.test.output.resourcesDir = sourceSets.test.java.outputDir
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
integrationTest {
|
||||||
|
compileClasspath += main.output + test.output
|
||||||
|
runtimeClasspath += main.output + test.output
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
implementation.setCanBeResolved(true)
|
||||||
|
api.setCanBeResolved(true)
|
||||||
|
|
||||||
|
integrationTestCompile.extendsFrom testImplementation
|
||||||
|
integrationTestRuntime.extendsFrom testRuntime
|
||||||
|
}
|
||||||
|
|
||||||
|
tasks.withType(JavaCompile) {
|
||||||
|
options.compilerArgs += [
|
||||||
|
"-Xlint:unchecked",
|
||||||
|
"-Xlint:cast",
|
||||||
|
"-Xlint:auxiliaryclass",
|
||||||
|
"-Xlint:deprecation",
|
||||||
|
"-Xlint:dep-ann",
|
||||||
|
"-Xlint:divzero",
|
||||||
|
"-Xlint:empty",
|
||||||
|
"-Xlint:exports",
|
||||||
|
"-Xlint:fallthrough",
|
||||||
|
"-Xlint:finally",
|
||||||
|
"-Xlint:module",
|
||||||
|
"-Xlint:opens",
|
||||||
|
"-Xlint:options",
|
||||||
|
"-Xlint:overloads",
|
||||||
|
"-Xlint:overrides",
|
||||||
|
"-Xlint:path",
|
||||||
|
"-Xlint:processing",
|
||||||
|
"-Xlint:removal",
|
||||||
|
"-Xlint:requires-automatic",
|
||||||
|
"-Xlint:requires-transitive-automatic",
|
||||||
|
"-Xlint:try",
|
||||||
|
"-Xlint:varargs",
|
||||||
|
"-Xlint:preview",
|
||||||
|
"-Xlint:static",
|
||||||
|
// "-Werror" // TODO: @vidakovic fix this
|
||||||
|
]
|
||||||
|
// TODO FINERACT-959 (gradually) enable -Xlint:all (see "javac -help -X")
|
||||||
|
|
||||||
|
options.deprecation = true
|
||||||
|
|
||||||
|
options.compilerArgs +=[
|
||||||
|
"-Xmaxwarns",
|
||||||
|
1500,
|
||||||
|
"-Xmaxerrs",
|
||||||
|
1500
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
|
// Configuration for the spotless plugin
|
||||||
|
// https://github.com/diffplug/spotless/tree/main/plugin-gradle
|
||||||
|
spotless {
|
||||||
|
java {
|
||||||
|
targetExclude '**/build/**', '**/bin/**', '**/out/**'
|
||||||
|
importOrder() //sort imports alphabetically
|
||||||
|
removeUnusedImports()
|
||||||
|
eclipse().configFile "$rootDir/config/fineractdev-formatter.xml"
|
||||||
|
endWithNewline()
|
||||||
|
trimTrailingWhitespace()
|
||||||
|
|
||||||
|
// Enforce style modifier order
|
||||||
|
custom 'Modifier ordering', {
|
||||||
|
def modifierRanking = [
|
||||||
|
public : 1,
|
||||||
|
protected : 2,
|
||||||
|
private : 3,
|
||||||
|
abstract : 4,
|
||||||
|
default : 5,
|
||||||
|
static : 6,
|
||||||
|
final : 7,
|
||||||
|
transient : 8,
|
||||||
|
volatile : 9,
|
||||||
|
synchronized: 10,
|
||||||
|
native : 11,
|
||||||
|
strictfp : 12]
|
||||||
|
// Find any instance of multiple modifiers. Lead with a non-word character to avoid
|
||||||
|
// accidental matching against for instance, "an alternative default value"
|
||||||
|
it.replaceAll(/\W(?:public |protected |private |abstract |default |static |final |transient |volatile |synchronized |native |strictfp ){2,}/, {
|
||||||
|
// Do not replace the leading non-word character. Identify the modifiers
|
||||||
|
it.replaceAll(/(?:public |protected |private |abstract |default |static |final |transient |volatile |synchronized |native |strictfp ){2,}/, {
|
||||||
|
// Sort the modifiers according to the ranking above
|
||||||
|
it.split().sort({ modifierRanking[it] }).join(' ') + ' '
|
||||||
}
|
}
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
)
|
||||||
|
|
||||||
if (project.hasProperty("automatedBuild")) {
|
|
||||||
dependsOn(spotlessCheck)
|
|
||||||
} else {
|
|
||||||
dependsOn(spotlessApply)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
lineEndings 'UNIX'
|
lineEndings 'UNIX'
|
||||||
}
|
}
|
||||||
|
|
||||||
|
compileJava {
|
||||||
|
if (project.hasProperty('automatedBuild')) {
|
||||||
|
dependsOn(spotlessCheck)
|
||||||
|
} else {
|
||||||
|
dependsOn(spotlessApply)
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,24 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
<profiles version="2">
|
<profiles version="2">
|
||||||
<profile kind="CleanUpProfile" name="fineractdevprofile" version="2">
|
<profile kind="CleanUpProfile" name="fineractdevprofile" version="2">
|
||||||
<setting id="cleanup.use_autoboxing" value="false"/>
|
<setting id="cleanup.use_autoboxing" value="false"/>
|
||||||
|
|||||||
@@ -1,4 +1,24 @@
|
|||||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!--
|
||||||
|
|
||||||
|
Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
or more contributor license agreements. See the NOTICE file
|
||||||
|
distributed with this work for additional information
|
||||||
|
regarding copyright ownership. The ASF licenses this file
|
||||||
|
to you under the Apache License, Version 2.0 (the
|
||||||
|
"License"); you may not use this file except in compliance
|
||||||
|
with the License. You may obtain a copy of the License at
|
||||||
|
|
||||||
|
http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
|
||||||
|
Unless required by applicable law or agreed to in writing,
|
||||||
|
software distributed under the License is distributed on an
|
||||||
|
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
KIND, either express or implied. See the License for the
|
||||||
|
specific language governing permissions and limitations
|
||||||
|
under the License.
|
||||||
|
|
||||||
|
-->
|
||||||
<profiles version="18">
|
<profiles version="18">
|
||||||
<profile kind="CodeFormatterProfile" name="fineractdevprojectformatter" version="18">
|
<profile kind="CodeFormatterProfile" name="fineractdevprojectformatter" version="18">
|
||||||
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
|
<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/**
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
description = 'Fineract Client'
|
||||||
|
|
||||||
|
ext['swaggerFile'] = "$rootDir/fineract-provider/build/classes/java/main/static/swagger-ui/fineract.yaml".toString()
|
||||||
|
|
||||||
|
apply plugin: 'org.openapi.generator'
|
||||||
|
|
||||||
|
apply from: 'dependencies.gradle'
|
||||||
|
|
||||||
|
// TODO: @vidakovic we should publish this lib to Maven Central; do in separate PR
|
||||||
|
|
||||||
|
openApiMeta {
|
||||||
|
generatorName = 'Fineract'
|
||||||
|
packageName = 'org.apache.fineract.client'
|
||||||
|
outputFolder = "$buildDir/meta".toString()
|
||||||
|
}
|
||||||
|
|
||||||
|
openApiValidate {
|
||||||
|
inputSpec = "$swaggerFile"
|
||||||
|
recommend = true
|
||||||
|
}
|
||||||
|
|
||||||
|
task buildJavaSdk(type: org.openapitools.generator.gradle.plugin.tasks.GenerateTask){
|
||||||
|
generatorName = 'java'
|
||||||
|
verbose = false
|
||||||
|
validateSpec = false
|
||||||
|
skipValidateSpec = true
|
||||||
|
inputSpec = "$swaggerFile"
|
||||||
|
outputDir = "$buildDir/generated/java".toString()
|
||||||
|
groupId = 'org.apache.fineract'
|
||||||
|
apiPackage = 'org.apache.fineract.client.services'
|
||||||
|
invokerPackage = 'org.apache.fineract.client'
|
||||||
|
modelPackage = 'org.apache.fineract.client.models'
|
||||||
|
configOptions = [
|
||||||
|
dateLibrary: 'java8',
|
||||||
|
useRxJava2: 'true',
|
||||||
|
library: 'retrofit2',
|
||||||
|
hideGenerationTimestamp: 'true',
|
||||||
|
]
|
||||||
|
generateModelTests = false
|
||||||
|
generateApiTests = false
|
||||||
|
// trick to make sure fineract.yaml is generated first
|
||||||
|
dependsOn = [
|
||||||
|
':fineract-provider:compileJava'
|
||||||
|
]
|
||||||
|
finalizedBy = [licenseFormat]
|
||||||
|
}
|
||||||
|
|
||||||
|
// TODO: @vidakovic we could provide even more client libs in different languages (Go, Ruby, Swift etc.)
|
||||||
|
compileJava.dependsOn buildJavaSdk, spotlessJavaApply
|
||||||
|
|
||||||
|
sourceSets {
|
||||||
|
generated {
|
||||||
|
java {
|
||||||
|
srcDir "$buildDir/generated/java/src/main/java"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
compileJava {
|
||||||
|
source += sourceSets.generated.java
|
||||||
|
}
|
||||||
|
|
||||||
|
configurations {
|
||||||
|
generatedCompile.extendsFrom implementation
|
||||||
|
generatedRuntime.extendsFrom runtime
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
/**
|
||||||
|
* Licensed to the Apache Software Foundation (ASF) under one
|
||||||
|
* or more contributor license agreements. See the NOTICE file
|
||||||
|
* distributed with this work for additional information
|
||||||
|
* regarding copyright ownership. The ASF licenses this file
|
||||||
|
* to you under the Apache License, Version 2.0 (the
|
||||||
|
* "License"); you may not use this file except in compliance
|
||||||
|
* with the License. You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing,
|
||||||
|
* software distributed under the License is distributed on an
|
||||||
|
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
|
||||||
|
* KIND, either express or implied. See the License for the
|
||||||
|
* specific language governing permissions and limitations
|
||||||
|
* under the License.
|
||||||
|
*/
|
||||||
|
dependencies {
|
||||||
|
// project(':fineract-provider')
|
||||||
|
implementation(
|
||||||
|
'io.swagger:swagger-core',
|
||||||
|
'io.swagger:swagger-annotations',
|
||||||
|
'com.squareup.retrofit2:retrofit',
|
||||||
|
'com.squareup.retrofit2:adapter-java8',
|
||||||
|
'com.squareup.retrofit2:adapter-rxjava2',
|
||||||
|
'com.squareup.retrofit2:converter-jackson',
|
||||||
|
'com.squareup.retrofit2:converter-scalars',
|
||||||
|
'com.squareup.retrofit2:converter-gson',
|
||||||
|
'com.squareup.okhttp3:okhttp',
|
||||||
|
'com.squareup.okhttp3:okcurl',
|
||||||
|
'com.squareup.okhttp3:logging-interceptor',
|
||||||
|
'com.google.code.findbugs:jsr305',
|
||||||
|
'com.google.code.gson:gson',
|
||||||
|
'io.gsonfire:gson-fire',
|
||||||
|
'org.threeten:threetenbp',
|
||||||
|
'org.springframework:spring-core',
|
||||||
|
'org.springframework:spring-context',
|
||||||
|
'javax.annotation:javax.annotation-api',
|
||||||
|
'commons-codec:commons-codec',
|
||||||
|
)
|
||||||
|
implementation('org.apache.oltu.oauth2:org.apache.oltu.oauth2.client') {
|
||||||
|
exclude group: 'org.apache.oltu.oauth2' , module: 'org.apache.oltu.oauth2.common'
|
||||||
|
}
|
||||||
|
}
|
||||||
+100
-384
@@ -18,15 +18,11 @@
|
|||||||
*/
|
*/
|
||||||
description = 'Fineract Provider'
|
description = 'Fineract Provider'
|
||||||
|
|
||||||
apply plugin: "org.nosphere.apache.rat"
|
|
||||||
apply plugin: 'rebel'
|
apply plugin: 'rebel'
|
||||||
apply plugin: 'com.github.hierynomus.license'
|
|
||||||
apply plugin: 'war'
|
apply plugin: 'war'
|
||||||
apply plugin: 'org.springframework.boot'
|
apply plugin: 'org.springframework.boot'
|
||||||
apply plugin: 'idea'
|
|
||||||
apply plugin: 'com.bmuschko.cargo'
|
apply plugin: 'com.bmuschko.cargo'
|
||||||
apply plugin: 'project-report'
|
apply plugin: 'project-report'
|
||||||
apply plugin: 'java-library'
|
|
||||||
apply plugin: 'openjpa'
|
apply plugin: 'openjpa'
|
||||||
apply plugin: "com.github.spotbugs"
|
apply plugin: "com.github.spotbugs"
|
||||||
apply plugin: 'checkstyle'
|
apply plugin: 'checkstyle'
|
||||||
@@ -35,104 +31,12 @@ apply plugin: 'jacoco'
|
|||||||
apply plugin: "com.gorylenko.gradle-git-properties"
|
apply plugin: "com.gorylenko.gradle-git-properties"
|
||||||
apply plugin: "net.ltgt.errorprone"
|
apply plugin: "net.ltgt.errorprone"
|
||||||
apply plugin: "io.swagger.core.v3.swagger-gradle-plugin"
|
apply plugin: "io.swagger.core.v3.swagger-gradle-plugin"
|
||||||
apply plugin: "org.hidetake.swagger.generator"
|
|
||||||
apply plugin: 'distribution'
|
apply plugin: 'distribution'
|
||||||
apply plugin: 'signing'
|
apply plugin: 'signing'
|
||||||
|
|
||||||
dependencyManagement {
|
|
||||||
imports {
|
|
||||||
mavenBom 'org.springframework:spring-framework-bom:5.2.9.RELEASE'
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencies {
|
|
||||||
// We use fixed versions, instead of inheriting them from the Spring BOM, to be able to be on more recent ones.
|
|
||||||
// We do not use :+ to get the latest available version available on Maven Central, as that could suddenly break things.
|
|
||||||
// We use the Renovate Bot to automatically propose Pull Requests (PRs) when upgrades for all of these versions are available.
|
|
||||||
|
|
||||||
dependency 'org.springframework.security.oauth:spring-security-oauth2:2.5.0.RELEASE'
|
|
||||||
dependency 'org.apache.openjpa:openjpa:3.1.2' // when upgrading, also change OpenJPA version repeated above in buildscript!
|
|
||||||
dependency 'com.squareup.retrofit:retrofit:1.9.0'
|
|
||||||
dependency 'com.squareup.okhttp:okhttp:2.7.5'
|
|
||||||
dependency 'com.squareup.okhttp:okhttp-urlconnection:2.7.5'
|
|
||||||
dependency 'com.google.guava:guava:30.0-jre'
|
|
||||||
dependency 'com.google.code.gson:gson:2.8.6'
|
|
||||||
dependency 'org.apache.commons:commons-email:1.5'
|
|
||||||
dependency 'commons-io:commons-io:2.8.0'
|
|
||||||
dependency 'org.drizzle.jdbc:drizzle-jdbc:1.4'
|
|
||||||
dependency 'com.github.librepdf:openpdf:1.3.22'
|
|
||||||
dependency 'org.mnode.ical4j:ical4j:3.0.20'
|
|
||||||
dependency 'org.quartz-scheduler:quartz:2.3.2'
|
|
||||||
dependency 'com.amazonaws:aws-java-sdk-s3:1.11.874'
|
|
||||||
dependency 'org.ehcache:ehcache:3.9.0'
|
|
||||||
dependency 'com.github.spullara.mustache.java:compiler:0.9.6'
|
|
||||||
dependency 'com.jayway.jsonpath:json-path:2.4.0'
|
|
||||||
dependency 'org.apache.tika:tika-core:1.24.1'
|
|
||||||
dependency 'org.apache.httpcomponents:httpclient:4.5.13'
|
|
||||||
dependency 'io.swagger.core.v3:swagger-annotations:2.1.5'
|
|
||||||
dependency 'jakarta.management.j2ee:jakarta.management.j2ee-api:1.1.4'
|
|
||||||
dependency 'jakarta.jms:jakarta.jms-api:2.0.3'
|
|
||||||
dependency 'jakarta.xml.bind:jakarta.xml.bind-api:2.3.3'
|
|
||||||
dependency 'jakarta.validation:jakarta.validation-api:3.0.0'
|
|
||||||
dependency 'org.apache.activemq:activemq-broker:5.16.0'
|
|
||||||
dependency 'org.apache.bval:org.apache.bval.bundle:2.0.4'
|
|
||||||
dependency 'org.mockito:mockito-core:3.5.13'
|
|
||||||
dependency 'org.mockito:mockito-junit-jupiter:3.5.13'
|
|
||||||
dependency 'io.github.classgraph:classgraph:4.8.90'
|
|
||||||
dependency 'org.awaitility:awaitility:4.0.3'
|
|
||||||
dependency 'com.github.spotbugs:spotbugs-annotations:4.1.4'
|
|
||||||
dependency 'javax.cache:cache-api:1.1.1'
|
|
||||||
dependency 'org.mock-server:mockserver-junit-jupiter:5.11.1'
|
|
||||||
dependency 'org.webjars.npm:swagger-ui-dist:3.35.2'
|
|
||||||
dependency 'org.webjars:webjars-locator-core:0.46'
|
|
||||||
|
|
||||||
dependency ('org.flywaydb:flyway-core:7.0.0') {
|
|
||||||
// https://issues.apache.org/jira/browse/FINERACT-1172
|
|
||||||
// https://github.com/apache/fineract/pull/1355
|
|
||||||
// https://github.com/flyway/flyway/issues/2957
|
|
||||||
// exclude conflicting non-<optional> dependencies from https://github.com/flyway/flyway/blob/master/flyway-core/pom.xml
|
|
||||||
exclude 'software.amazon.awssdk:s3'
|
|
||||||
}
|
|
||||||
|
|
||||||
dependency ('org.dom4j:dom4j:2.1.3') {
|
|
||||||
exclude 'relaxngDatatype:relaxngDatatype' // already in com.sun.xml.bind:jaxb-osgi:2.3.0.1
|
|
||||||
// FINERACT-940 && FINERACT-966 https://github.com/spotbugs/spotbugs/issues/1128
|
|
||||||
exclude 'xpp3:xpp3'
|
|
||||||
exclude 'pull-parser:pull-parser'
|
|
||||||
}
|
|
||||||
|
|
||||||
dependencySet(group: 'com.sun.jersey', version: jerseyVersion) {
|
|
||||||
entry 'jersey-core'
|
|
||||||
entry 'jersey-servlet'
|
|
||||||
entry 'jersey-server'
|
|
||||||
entry 'jersey-json'
|
|
||||||
}
|
|
||||||
dependencySet(group: 'com.sun.jersey.contribs', version: jerseyVersion) {
|
|
||||||
entry 'jersey-spring'
|
|
||||||
entry 'jersey-multipart'
|
|
||||||
}
|
|
||||||
dependencySet(group: 'org.apache.poi', version: '4.1.2') {
|
|
||||||
entry 'poi'
|
|
||||||
entry 'poi-ooxml'
|
|
||||||
entry 'poi-ooxml-schemas'
|
|
||||||
}
|
|
||||||
dependencySet(group: 'io.rest-assured', version: '4.3.0')
|
|
||||||
{
|
|
||||||
entry 'rest-assured'
|
|
||||||
entry 'json-path'
|
|
||||||
entry 'xml-path'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/* define the valid syntax level for source files */
|
|
||||||
sourceCompatibility = JavaVersion.VERSION_11
|
|
||||||
/* define binary compatibility version */
|
|
||||||
targetCompatibility = JavaVersion.VERSION_11
|
|
||||||
|
|
||||||
// If we are running Gradle within Eclipse to enhance classes with OpenJPA,
|
// If we are running Gradle within Eclipse to enhance classes with OpenJPA,
|
||||||
// set the classes directory to point to Eclipse's default build directory
|
// set the classes directory to point to Eclipse's default build directory
|
||||||
if (project.hasProperty('env') && project.getProperty('env') == 'eclipse')
|
if (project.hasProperty('env') && project.getProperty('env') == 'eclipse') {
|
||||||
{
|
|
||||||
sourceSets.main.java.outputDir = new File(rootProject.projectDir, "fineract-provider/bin/main")
|
sourceSets.main.java.outputDir = new File(rootProject.projectDir, "fineract-provider/bin/main")
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -200,87 +104,6 @@ jacocoTestReport {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configuration for Apache Release Audit Tool task
|
|
||||||
// https://github.com/eskatos/creadur-rat-gradle
|
|
||||||
rat {
|
|
||||||
verbose = false
|
|
||||||
reportDir = file("$buildDir/reports/rat")
|
|
||||||
excludes = [
|
|
||||||
'**/*.launch',
|
|
||||||
'**/licenses/**',
|
|
||||||
'**/*.md',
|
|
||||||
'**/*.github/**',
|
|
||||||
'**/MANIFEST.MF',
|
|
||||||
'**/*.json',
|
|
||||||
'**/*.json.template',
|
|
||||||
'**/*.txt',
|
|
||||||
'**/*.log',
|
|
||||||
'**/fineractdev-eclipse-preferences.epf',
|
|
||||||
'**/template-expected.html',
|
|
||||||
'**/template.mustache',
|
|
||||||
'**/.classpath',
|
|
||||||
'**/.project',
|
|
||||||
'**/.idea/**',
|
|
||||||
'**/*.ipr',
|
|
||||||
'**/*.iws',
|
|
||||||
'**/.settings/**',
|
|
||||||
'**/bin/**',
|
|
||||||
'**/.git/**',
|
|
||||||
'**/.gitignore',
|
|
||||||
'**/.gitkeep',
|
|
||||||
'**/*.iml',
|
|
||||||
'**/config/swagger/templates/**',
|
|
||||||
// Notice files
|
|
||||||
'**/NOTICE_RELEASE',
|
|
||||||
'**/NOTICE_SOURCE',
|
|
||||||
// Swagger License
|
|
||||||
'**/src/main/resources/static/swagger-ui/**',
|
|
||||||
// gradle
|
|
||||||
'**/.gradle/**',
|
|
||||||
'**/gradlew',
|
|
||||||
'**/gradlew.bat',
|
|
||||||
'**/gradle/wrapper/gradle-wrapper.properties',
|
|
||||||
'**/caches/**',
|
|
||||||
'**/daemon/**',
|
|
||||||
'**/native/**',
|
|
||||||
'**/wrapper/**',
|
|
||||||
'**/build/**',
|
|
||||||
// Api Docs
|
|
||||||
'**/api-docs/*.*',
|
|
||||||
'**/docs/system-architecture/.htaccess',
|
|
||||||
'**/docs/system-architecture/404.html',
|
|
||||||
'**/docs/system-architecture/index.html',
|
|
||||||
'**/docs/system-architecture/**/*.xml',
|
|
||||||
'**/bootstrap-3.0.0/assets/application.js',
|
|
||||||
'**/system-architecture/js/plugins.js',
|
|
||||||
// Apache License
|
|
||||||
'**/bootstrap-3.0.0/assets/less.js',
|
|
||||||
'**/css/bootstrap-3.0.0/**/*.*',
|
|
||||||
// Public Domain See http://www.JSON.org/js.html
|
|
||||||
'**/bootstrap-3.0.0/assets/json2.js.htm',
|
|
||||||
// MIT License
|
|
||||||
'**/modernizr-2.6.2.min.js',
|
|
||||||
'**/css/normalize.css',
|
|
||||||
'**/assets/filesaver.js',
|
|
||||||
'**/css/fonts/glyphicons-halflings-regular.svg',
|
|
||||||
'**/assets/jszip.js',
|
|
||||||
'**/assets/jquery.js',
|
|
||||||
'**/api-docs/jquery-1.7.min.js',
|
|
||||||
'**/css/toc-0.1.2/**/*.*',
|
|
||||||
'**/docs/system-architecture/css/main.css',
|
|
||||||
'**/system-architecture/js/vendor/jquery-1.9.1.min.js',
|
|
||||||
'**/system-architecture/js/vendor/toc-0.1.2/jquery.toc.min.js',
|
|
||||||
'**/assets/respond.min.js',
|
|
||||||
'**/assets/html5shiv.js',
|
|
||||||
// BSD License
|
|
||||||
'**/assets/uglify.js',
|
|
||||||
// Ignore out folder
|
|
||||||
'**/out/**',
|
|
||||||
// Git build info
|
|
||||||
"**/git.properties",
|
|
||||||
]
|
|
||||||
}
|
|
||||||
|
|
||||||
configurations {
|
configurations {
|
||||||
providedRuntime // needed for Spring Boot executable WAR
|
providedRuntime // needed for Spring Boot executable WAR
|
||||||
providedCompile
|
providedCompile
|
||||||
@@ -302,140 +125,6 @@ configurations {
|
|||||||
runtime
|
runtime
|
||||||
}
|
}
|
||||||
|
|
||||||
tasks.withType(JavaCompile) {
|
|
||||||
options.compilerArgs += [
|
|
||||||
"-Xlint:unchecked",
|
|
||||||
"-Xlint:cast",
|
|
||||||
"-Xlint:auxiliaryclass",
|
|
||||||
"-Xlint:deprecation",
|
|
||||||
"-Xlint:dep-ann",
|
|
||||||
"-Xlint:divzero",
|
|
||||||
"-Xlint:empty",
|
|
||||||
"-Xlint:exports",
|
|
||||||
"-Xlint:fallthrough",
|
|
||||||
"-Xlint:finally",
|
|
||||||
"-Xlint:module",
|
|
||||||
"-Xlint:opens",
|
|
||||||
"-Xlint:options",
|
|
||||||
"-Xlint:overloads",
|
|
||||||
"-Xlint:overrides",
|
|
||||||
"-Xlint:path",
|
|
||||||
"-Xlint:processing",
|
|
||||||
"-Xlint:removal",
|
|
||||||
"-Xlint:requires-automatic",
|
|
||||||
"-Xlint:requires-transitive-automatic",
|
|
||||||
"-Xlint:try",
|
|
||||||
"-Xlint:varargs",
|
|
||||||
"-Xlint:preview",
|
|
||||||
"-Xlint:static",
|
|
||||||
"-Werror"
|
|
||||||
]
|
|
||||||
// TODO FINERACT-959 (gradually) enable -Xlint:all (see "javac -help -X")
|
|
||||||
|
|
||||||
options.deprecation = true
|
|
||||||
options.errorprone {
|
|
||||||
disableWarningsInGeneratedCode = true
|
|
||||||
//Todo Remove necessary checks from this list
|
|
||||||
disable(
|
|
||||||
"UnusedVariable",
|
|
||||||
"TypeParameterUnusedInFormals",
|
|
||||||
"JdkObsolete",
|
|
||||||
"EmptyBlockTag",
|
|
||||||
"MissingSummary",
|
|
||||||
"InvalidParam",
|
|
||||||
"ReturnFromVoid",
|
|
||||||
"AlmostJavadoc",
|
|
||||||
"InvalidBlockTag",
|
|
||||||
)
|
|
||||||
//TODO gradually enable these checks
|
|
||||||
error(
|
|
||||||
"DefaultCharset",
|
|
||||||
"RemoveUnusedImports",
|
|
||||||
"WaitNotInLoop",
|
|
||||||
"ThreeLetterTimeZoneID",
|
|
||||||
"VariableNameSameAsType",
|
|
||||||
"UnnecessaryParentheses",
|
|
||||||
"MultipleTopLevelClasses",
|
|
||||||
"MixedMutabilityReturnType",
|
|
||||||
"MultiVariableDeclaration",
|
|
||||||
"AssertEqualsArgumentOrderChecker",
|
|
||||||
"EmptySetMultibindingContributions",
|
|
||||||
"BigDecimalEquals",
|
|
||||||
"MixedArrayDimensions",
|
|
||||||
"PackageLocation",
|
|
||||||
"UseBinds",
|
|
||||||
"BadImport",
|
|
||||||
"IntLongMath",
|
|
||||||
"FloatCast",
|
|
||||||
"ReachabilityFenceUsage",
|
|
||||||
"StreamResourceLeak",
|
|
||||||
"TruthIncompatibleType",
|
|
||||||
"ByteBufferBackingArray",
|
|
||||||
"SameNameButDifferent",
|
|
||||||
"OrphanedFormatString",
|
|
||||||
"CatchAndPrintStackTrace",
|
|
||||||
"ObjectToString",
|
|
||||||
"StringSplitter",
|
|
||||||
"AssertThrowsMultipleStatements",
|
|
||||||
"BoxedPrimitiveConstructor",
|
|
||||||
"EmptyCatch",
|
|
||||||
"BoxedPrimitiveEquality",
|
|
||||||
"SynchronizeOnNonFinalField",
|
|
||||||
"WildcardImport",
|
|
||||||
"FutureReturnValueIgnored",
|
|
||||||
"PrivateConstructorForNoninstantiableModule",
|
|
||||||
"ClassCanBeStatic",
|
|
||||||
"ClassNewInstance",
|
|
||||||
"UnnecessaryStaticImport",
|
|
||||||
"UnsafeFinalization",
|
|
||||||
"JodaPlusMinusLong",
|
|
||||||
"MutableMethodReturnType",
|
|
||||||
"SwitchDefault",
|
|
||||||
"VarTypeName",
|
|
||||||
"ArgumentSelectionDefectChecker",
|
|
||||||
"CompareToZero",
|
|
||||||
"InjectOnConstructorOfAbstractClass",
|
|
||||||
"ImmutableEnumChecker",
|
|
||||||
"NarrowingCompoundAssignment",
|
|
||||||
"MissingCasesInEnumSwitch",
|
|
||||||
"ReferenceEquality",
|
|
||||||
"UndefinedEquals",
|
|
||||||
"PublicConstructorForAbstractClass",
|
|
||||||
"UnescapedEntity",
|
|
||||||
"ModifyCollectionInEnhancedForLoop",
|
|
||||||
"NonCanonicalType",
|
|
||||||
"InvalidInlineTag",
|
|
||||||
"MutablePublicArray",
|
|
||||||
"StaticAssignmentInConstructor",
|
|
||||||
"ProtectedMembersInFinalClass",
|
|
||||||
"OperatorPrecedence",
|
|
||||||
"EqualsGetClass",
|
|
||||||
"EqualsUnsafeCast",
|
|
||||||
"DoubleBraceInitialization",
|
|
||||||
"UnnecessaryDefaultInEnumSwitch",
|
|
||||||
"UnusedNestedClass",
|
|
||||||
"UnusedMethod",
|
|
||||||
"ModifiedButNotUsed",
|
|
||||||
"InconsistentCapitalization",
|
|
||||||
"MissingOverride",
|
|
||||||
// "InvalidBlockTag",
|
|
||||||
// "InconsistentOverloads",
|
|
||||||
// "MethodCanBeStatic",
|
|
||||||
// "Var",
|
|
||||||
// "ConstantField",
|
|
||||||
// "UnnecessaryDefaultInEnumSwitch",
|
|
||||||
// "FieldCanBeFinal"
|
|
||||||
)
|
|
||||||
}
|
|
||||||
options.compilerArgs +=[
|
|
||||||
"-Xmaxwarns",
|
|
||||||
1500,
|
|
||||||
"-Xmaxerrs",
|
|
||||||
1500
|
|
||||||
]
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
apply from: 'dependencies.gradle'
|
apply from: 'dependencies.gradle'
|
||||||
/* TODO https://issues.apache.org/jira/browse/FINERACT-939 (dev-dependencies.gradle has been removed, as totally broken)
|
/* TODO https://issues.apache.org/jira/browse/FINERACT-939 (dev-dependencies.gradle has been removed, as totally broken)
|
||||||
// Pick up dependencies based on the environment, defaults to production
|
// Pick up dependencies based on the environment, defaults to production
|
||||||
@@ -529,37 +218,110 @@ war {
|
|||||||
enabled = true
|
enabled = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Configuration for Gradle license plug-in
|
|
||||||
// https://github.com/hierynomus/license-gradle-plugin
|
|
||||||
license {
|
|
||||||
header rootProject.file("$rootDir/APACHE_LICENSETEXT.md")
|
|
||||||
excludes([
|
|
||||||
"**/git.properties",
|
|
||||||
"**/*.html",
|
|
||||||
"**/*.mustache",
|
|
||||||
"**/package-info.java",
|
|
||||||
"**/keystore.jks",
|
|
||||||
"**/static/swagger-ui/**",
|
|
||||||
"**/api-docs/**",
|
|
||||||
])
|
|
||||||
strictCheck true
|
|
||||||
}
|
|
||||||
|
|
||||||
task licenseFormatBuildScripts (type:nl.javadude.gradle.plugins.license.License) {
|
|
||||||
source = fileTree(dir: "$rootDir/", includes: [
|
|
||||||
'**/*.bat',
|
|
||||||
'**/*.sh',
|
|
||||||
'**/*.sql'
|
|
||||||
])
|
|
||||||
}
|
|
||||||
licenseFormat.dependsOn licenseFormatBuildScripts
|
|
||||||
|
|
||||||
// Configuration for the errorprone plugin
|
// Configuration for the errorprone plugin
|
||||||
// https://github.com/tbroyer/gradle-errorprone-plugin
|
// https://github.com/tbroyer/gradle-errorprone-plugin
|
||||||
dependencies {
|
dependencies {
|
||||||
errorprone "com.google.errorprone:error_prone_core:2.4.0"
|
errorprone "com.google.errorprone:error_prone_core:2.4.0"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tasks.withType(JavaCompile) {
|
||||||
|
options.errorprone {
|
||||||
|
disableWarningsInGeneratedCode = true
|
||||||
|
excludedPaths = ".*/build/.*"
|
||||||
|
//Todo Remove necessary checks from this list
|
||||||
|
disable(
|
||||||
|
"UnusedVariable",
|
||||||
|
"TypeParameterUnusedInFormals",
|
||||||
|
"JdkObsolete",
|
||||||
|
"EmptyBlockTag",
|
||||||
|
"MissingSummary",
|
||||||
|
"InvalidParam",
|
||||||
|
"ReturnFromVoid",
|
||||||
|
"AlmostJavadoc",
|
||||||
|
"InvalidBlockTag",
|
||||||
|
)
|
||||||
|
//TODO gradually enable these checks
|
||||||
|
error(
|
||||||
|
"DefaultCharset",
|
||||||
|
"RemoveUnusedImports",
|
||||||
|
"WaitNotInLoop",
|
||||||
|
"ThreeLetterTimeZoneID",
|
||||||
|
"VariableNameSameAsType",
|
||||||
|
"UnnecessaryParentheses",
|
||||||
|
"MultipleTopLevelClasses",
|
||||||
|
"MixedMutabilityReturnType",
|
||||||
|
"MultiVariableDeclaration",
|
||||||
|
"AssertEqualsArgumentOrderChecker",
|
||||||
|
"EmptySetMultibindingContributions",
|
||||||
|
"BigDecimalEquals",
|
||||||
|
"MixedArrayDimensions",
|
||||||
|
"PackageLocation",
|
||||||
|
"UseBinds",
|
||||||
|
"BadImport",
|
||||||
|
"IntLongMath",
|
||||||
|
"FloatCast",
|
||||||
|
"ReachabilityFenceUsage",
|
||||||
|
"StreamResourceLeak",
|
||||||
|
"TruthIncompatibleType",
|
||||||
|
"ByteBufferBackingArray",
|
||||||
|
"SameNameButDifferent",
|
||||||
|
"OrphanedFormatString",
|
||||||
|
"CatchAndPrintStackTrace",
|
||||||
|
"ObjectToString",
|
||||||
|
"StringSplitter",
|
||||||
|
"AssertThrowsMultipleStatements",
|
||||||
|
"BoxedPrimitiveConstructor",
|
||||||
|
"EmptyCatch",
|
||||||
|
"BoxedPrimitiveEquality",
|
||||||
|
"SynchronizeOnNonFinalField",
|
||||||
|
"WildcardImport",
|
||||||
|
"FutureReturnValueIgnored",
|
||||||
|
"PrivateConstructorForNoninstantiableModule",
|
||||||
|
"ClassCanBeStatic",
|
||||||
|
"ClassNewInstance",
|
||||||
|
"UnnecessaryStaticImport",
|
||||||
|
"UnsafeFinalization",
|
||||||
|
"JodaPlusMinusLong",
|
||||||
|
"MutableMethodReturnType",
|
||||||
|
"SwitchDefault",
|
||||||
|
"VarTypeName",
|
||||||
|
"ArgumentSelectionDefectChecker",
|
||||||
|
"CompareToZero",
|
||||||
|
"InjectOnConstructorOfAbstractClass",
|
||||||
|
"ImmutableEnumChecker",
|
||||||
|
"NarrowingCompoundAssignment",
|
||||||
|
"MissingCasesInEnumSwitch",
|
||||||
|
"ReferenceEquality",
|
||||||
|
"UndefinedEquals",
|
||||||
|
"PublicConstructorForAbstractClass",
|
||||||
|
"UnescapedEntity",
|
||||||
|
"ModifyCollectionInEnhancedForLoop",
|
||||||
|
"NonCanonicalType",
|
||||||
|
"InvalidInlineTag",
|
||||||
|
"MutablePublicArray",
|
||||||
|
"StaticAssignmentInConstructor",
|
||||||
|
"ProtectedMembersInFinalClass",
|
||||||
|
"OperatorPrecedence",
|
||||||
|
"EqualsGetClass",
|
||||||
|
"EqualsUnsafeCast",
|
||||||
|
"DoubleBraceInitialization",
|
||||||
|
"UnnecessaryDefaultInEnumSwitch",
|
||||||
|
"UnusedNestedClass",
|
||||||
|
"UnusedMethod",
|
||||||
|
"ModifiedButNotUsed",
|
||||||
|
"InconsistentCapitalization",
|
||||||
|
"MissingOverride",
|
||||||
|
// "InvalidBlockTag",
|
||||||
|
// "InconsistentOverloads",
|
||||||
|
// "MethodCanBeStatic",
|
||||||
|
// "Var",
|
||||||
|
// "ConstantField",
|
||||||
|
// "UnnecessaryDefaultInEnumSwitch",
|
||||||
|
// "FieldCanBeFinal"
|
||||||
|
)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Configuration for the Gradle Cargo plugin
|
// Configuration for the Gradle Cargo plugin
|
||||||
// https://github.com/bmuschko/gradle-cargo-plugin
|
// https://github.com/bmuschko/gradle-cargo-plugin
|
||||||
configurations
|
configurations
|
||||||
@@ -626,18 +388,6 @@ if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
sourceSets {
|
|
||||||
integrationTest {
|
|
||||||
compileClasspath += main.output + test.output
|
|
||||||
runtimeClasspath += main.output + test.output
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
configurations {
|
|
||||||
integrationTestCompile.extendsFrom testImplementation
|
|
||||||
integrationTestRuntime.extendsFrom testRuntime
|
|
||||||
}
|
|
||||||
|
|
||||||
task integrationTest(type:Test) {
|
task integrationTest(type:Test) {
|
||||||
description = "Run integration tests (located in src/integrationTest/java). Starts Tomcat in daemon mode before executing the tests (and stops it after)."
|
description = "Run integration tests (located in src/integrationTest/java). Starts Tomcat in daemon mode before executing the tests (and stops it after)."
|
||||||
dependsOn cargoStartLocal
|
dependsOn cargoStartLocal
|
||||||
@@ -736,7 +486,6 @@ bootWar {
|
|||||||
tasks.withType(Tar) {
|
tasks.withType(Tar) {
|
||||||
compression Compression.GZIP
|
compression Compression.GZIP
|
||||||
extension 'tar.gz'
|
extension 'tar.gz'
|
||||||
dependsOn 'buildSwaggerCodeFineract'
|
|
||||||
}
|
}
|
||||||
|
|
||||||
distributions {
|
distributions {
|
||||||
@@ -745,10 +494,7 @@ distributions {
|
|||||||
contents {
|
contents {
|
||||||
from bootJar
|
from bootJar
|
||||||
from war
|
from war
|
||||||
from("$buildDir/swagger-code-fineract/build/libs/") {
|
// TODO: @vidakovic add client library
|
||||||
include '**/*.jar'
|
|
||||||
rename 'client-(.+)\\.jar', 'fineract-client.jar'
|
|
||||||
}
|
|
||||||
from("$rootDir/licenses/binary/") {
|
from("$rootDir/licenses/binary/") {
|
||||||
into "licenses/binary/"
|
into "licenses/binary/"
|
||||||
}
|
}
|
||||||
@@ -855,12 +601,6 @@ gitProperties {
|
|||||||
// make sure the generateGitProperties task always executes (even when git.properties is not changed)
|
// make sure the generateGitProperties task always executes (even when git.properties is not changed)
|
||||||
generateGitProperties.outputs.upToDateWhen { false }
|
generateGitProperties.outputs.upToDateWhen { false }
|
||||||
|
|
||||||
// This is for swagger code generation
|
|
||||||
// https://github.com/int128/gradle-swagger-generator-plugin
|
|
||||||
dependencies {
|
|
||||||
swaggerCodegen 'io.swagger.codegen.v3:swagger-codegen-cli:3.0.22'
|
|
||||||
}
|
|
||||||
|
|
||||||
task prepareConfigJson(dependsOn: 'generateGitProperties') {
|
task prepareConfigJson(dependsOn: 'generateGitProperties') {
|
||||||
doLast {
|
doLast {
|
||||||
def versionForSwagger
|
def versionForSwagger
|
||||||
@@ -878,27 +618,3 @@ task prepareConfigJson(dependsOn: 'generateGitProperties') {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
swaggerSources {
|
|
||||||
fineract {
|
|
||||||
inputFile = file("$buildDir/classes/java/main/static/swagger-ui/fineract.yaml")
|
|
||||||
code {
|
|
||||||
language = 'java'
|
|
||||||
configFile = file('config/swagger/config.json')
|
|
||||||
templateDir = file('config/swagger/templates')
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// had to put resolve dependency here to make this work in multi-module
|
|
||||||
generateSwaggerCodeFineract.dependsOn prepareConfigJson, resolve
|
|
||||||
|
|
||||||
// TODO: fix version information for client jar
|
|
||||||
// TODO: refactor to multi-module project and make client a separate module; cleaner than running exec
|
|
||||||
task buildSwaggerCodeFineract(type:Exec, dependsOn: [
|
|
||||||
'generateSwaggerCodeFineract'
|
|
||||||
]) {
|
|
||||||
workingDir "$buildDir/swagger-code-fineract"
|
|
||||||
executable 'sh'
|
|
||||||
args '-c', 'chmod +x gradlew && ./gradlew clean build'
|
|
||||||
}
|
|
||||||
|
|||||||
@@ -18,3 +18,4 @@
|
|||||||
*/
|
*/
|
||||||
rootProject.name="fineract"
|
rootProject.name="fineract"
|
||||||
include ':fineract-provider'
|
include ':fineract-provider'
|
||||||
|
include ':fineract-client'
|
||||||
|
|||||||
Reference in New Issue
Block a user