602 lines
18 KiB
Groovy
602 lines
18 KiB
Groovy
/**
|
|
* 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 = '''\
|
|
Run as:
|
|
gradle clean tomcatrunwar
|
|
'''
|
|
|
|
project.ext.jerseyVersion = '1.19.4'
|
|
|
|
buildscript {
|
|
ext {
|
|
jacocoVersion = '0.8.5'
|
|
}
|
|
repositories {
|
|
jcenter()
|
|
mavenCentral()
|
|
maven { url "https://plugins.gradle.org/m2/" }
|
|
}
|
|
|
|
dependencies {
|
|
classpath 'io.spring.gradle:dependency-management-plugin:1.0.9.RELEASE'
|
|
classpath 'com.bmuschko:gradle-tomcat-plugin:2.5',
|
|
'nl.javadude.gradle.plugins:license-gradle-plugin:0.11.0',
|
|
'org.zeroturnaround:gradle-jrebel-plugin:1.1.2',
|
|
'org.springframework.boot:spring-boot-gradle-plugin:2.2.4.RELEASE'
|
|
// below
|
|
classpath 'org.apache.openjpa:openjpa:3.1.1' // when upgrading, also change OpenJPA version repeated below in dependencyManagement!
|
|
classpath 'com.radcortez.gradle:openjpa-gradle-plugin:3.1.0'
|
|
classpath 'gradle.plugin.org.nosphere.apache:creadur-rat-gradle:0.2.2'
|
|
classpath "com.github.spotbugs:spotbugs-gradle-plugin:2.0.1"
|
|
// Use Guava version 23+ as a workaround to spotbug intergration.
|
|
// See: https://github.com/spotbugs/spotbugs-gradle-plugin/issues/128#issuecomment-535864882
|
|
classpath 'com.google.guava:guava:28.1-jre'
|
|
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.2"
|
|
}
|
|
}
|
|
|
|
apply plugin: 'io.spring.dependency-management'
|
|
apply plugin: "org.nosphere.apache.rat"
|
|
apply plugin: 'rebel'
|
|
apply plugin: 'license'
|
|
apply plugin: 'war'
|
|
apply plugin: 'org.springframework.boot'
|
|
apply plugin: 'eclipse'
|
|
apply plugin: 'idea'
|
|
apply plugin: 'com.bmuschko.tomcat'
|
|
apply plugin: 'project-report'
|
|
apply plugin: 'java-library'
|
|
apply plugin: 'openjpa'
|
|
apply plugin: "com.github.spotbugs"
|
|
apply plugin: 'checkstyle'
|
|
apply plugin: 'com.github.andygoossens.gradle-modernizer-plugin'
|
|
apply plugin: 'jacoco'
|
|
apply plugin: "com.gorylenko.gradle-git-properties"
|
|
// apply plugin: 'pmd'
|
|
|
|
dependencyManagement {
|
|
imports {
|
|
mavenBom 'org.springframework:spring-framework-bom:5.2.6.RELEASE'
|
|
}
|
|
|
|
dependencies {
|
|
// As much as possible, we avoid fixed versions, and prefer inheriting them from the Spring BOM, thus NOT listing versions here.
|
|
// (The :+ seems to mean latest available version available on Maven Central, which we should also avoid, as it's not isolated?)
|
|
|
|
dependency 'org.springframework.security.oauth:spring-security-oauth2:2.3.6.RELEASE'
|
|
dependency "org.apache.openjpa:openjpa:3.1.1" // when upgrading, also change OpenJPA version repeated above in buildscript!
|
|
dependency 'com.squareup.retrofit:retrofit:1.6.1'
|
|
dependency 'com.squareup.okhttp:okhttp:2.0.0'
|
|
dependency 'com.squareup.okhttp:okhttp-urlconnection:2.0.0'
|
|
dependency 'com.google.code.gson:gson:+'
|
|
dependency 'com.google.guava:guava:28.1-jre'
|
|
dependency 'org.apache.commons:commons-email:1.5'
|
|
dependency 'org.drizzle.jdbc:drizzle-jdbc:1.4'
|
|
dependency 'com.lowagie:itext:2.1.7'
|
|
dependency 'com.lowagie:itext-rtf:2.1.7'
|
|
dependency 'org.mnode.ical4j:ical4j:1.0.7'
|
|
dependency 'com.googlecode.flyway:flyway-core:2.1.1'
|
|
dependency 'org.quartz-scheduler:quartz:+'
|
|
dependency 'com.amazonaws:aws-java-sdk-s3:1.11.80'
|
|
dependency 'net.sf.ehcache:ehcache:+'
|
|
dependency 'com.github.spullara.mustache.java:compiler:0.8.12'
|
|
dependency 'com.jayway.jsonpath:json-path:0.9.1'
|
|
dependency 'org.apache.tika:tika-core:1.9'
|
|
dependency 'org.apache.httpcomponents:httpclient:+'
|
|
dependency 'io.swagger:swagger-jersey-jaxrs:1.5.15'
|
|
dependency 'jakarta.management.j2ee:jakarta.management.j2ee-api:1.1.4'
|
|
dependency 'jakarta.jms:jakarta.jms-api:2.0.3'
|
|
dependency 'org.apache.activemq:activemq-broker:+'
|
|
dependency 'org.apache.bval:org.apache.bval.bundle:2.0.2'
|
|
dependency 'junit:junit:+'
|
|
dependency 'org.mockito:mockito-core:+'
|
|
dependency 'org.slf4j:slf4j-simple:1.7.30'
|
|
dependency 'com.mockrunner:mockrunner-jms:2.0.1'
|
|
|
|
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: '3.9') {
|
|
entry 'poi'
|
|
entry 'poi-ooxml'
|
|
entry 'poi-ooxml-schemas'
|
|
}
|
|
dependencySet(group: 'org.apache.tomcat.embed', version: '7.0.94') {
|
|
entry 'tomcat-embed-core'
|
|
entry 'tomcat-embed-jasper'
|
|
entry 'tomcat-embed-logging-log4j'
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
/* define the valid syntax level for source files */
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
/* define binary compatibility version */
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
|
|
|
project.ext.mysqlUser='root'
|
|
project.ext.mysqlPassword='mysql'
|
|
|
|
group = 'org.apache.fineract'
|
|
buildDir = new File(rootProject.projectDir, "../build")
|
|
repositories {
|
|
jcenter()
|
|
// mavenLocal() // useful for local dev using MariaDB4j SNAPSHOTs (not needed for real-world non-SNAPHOT builds)
|
|
}
|
|
|
|
openjpa {
|
|
includes = ['**/AbstractPersistableCustom.class', '**/domain/*.class']
|
|
enhance {
|
|
enforcePropertyRestrictions true
|
|
}
|
|
}
|
|
|
|
jacoco {
|
|
toolVersion = jacocoVersion
|
|
reportsDir = file("$buildDir/reports/jacoco")
|
|
}
|
|
|
|
jacocoTestReport{
|
|
reports{
|
|
html.enabled=true
|
|
xml.enabled=true
|
|
html.destination file("${buildDir}/code-coverage")
|
|
}
|
|
}
|
|
|
|
rat {
|
|
xmlOutput = false
|
|
htmlOutput = false
|
|
plainOutput = true
|
|
verbose = false
|
|
// inputDir = './..'
|
|
reportDir = new File(buildDir,'reports/rat')
|
|
excludes = [
|
|
'**/licenses/**',
|
|
'**/*.md',
|
|
'**/*.github/**',
|
|
'**/MANIFEST.MF',
|
|
'**/*.json',
|
|
'**/*.txt',
|
|
'**/*.log',
|
|
'**/fineractdev-eclipse-preferences.epf',
|
|
'**/template-expected.html',
|
|
'**/template.mustache',
|
|
'**/.classpath',
|
|
'**/.project',
|
|
'**/.idea/**',
|
|
'**/*.ipr',
|
|
'**/*.iws',
|
|
'**/.settings/**',
|
|
'**/bin/**',
|
|
'**/.git/**',
|
|
'**/.gitignore',
|
|
'**/.gitkeep',
|
|
'**/*.iml',
|
|
//Notice files
|
|
'**/NOTICE_RELEASE',
|
|
'**/NOTICE_SOURCE',
|
|
// Swagger License
|
|
'**/src/main/resources/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 {
|
|
providedRuntime // needed for Spring Boot executable WAR
|
|
providedCompile
|
|
compile() {
|
|
exclude module: 'hibernate-entitymanager'
|
|
exclude module: 'hibernate-validator'
|
|
exclude module: 'activation'
|
|
exclude module: 'bcmail-jdk14'
|
|
exclude module: 'bcprov-jdk14'
|
|
exclude module: 'bctsp-jdk14'
|
|
exclude module: 'c3p0'
|
|
exclude module: 'stax-api'
|
|
exclude module: 'jaxb-api'
|
|
exclude module: 'jaxb-impl'
|
|
exclude module: 'jboss-logging'
|
|
exclude module: 'itext-rtf'
|
|
exclude module: 'classworlds'
|
|
}
|
|
runtime
|
|
all*.exclude group: 'commons-logging'
|
|
all*.exclude module: 'jul-to-slf4j' // see FINERACT-700 re. ClassCircularityError: java/util/logging/LogRecord
|
|
}
|
|
/* Pick up dependencies based on the environemnt, defaults to production */
|
|
if (project.hasProperty('env') && project.getProperty('env') == 'dev') {
|
|
apply from: 'dev-dependencies.gradle'
|
|
} else {
|
|
apply from: 'dependencies.gradle'
|
|
}
|
|
|
|
/* Enable Oauth2 authentication based on environment, default to HTTP basic auth */
|
|
if (project.hasProperty('security') && project.getProperty('security') == 'oauth') {
|
|
if(project.hasProperty('twofactor') && project.getProperty('twofactor') == 'enabled') {
|
|
copy {
|
|
from './properties/oauth/twofactor/'
|
|
into 'src/main/resources/'
|
|
include '*.properties'
|
|
}
|
|
} else {
|
|
copy {
|
|
from './properties/oauth/'
|
|
into 'src/main/resources/'
|
|
include '*.properties'
|
|
}
|
|
}
|
|
} else {
|
|
if(project.hasProperty('twofactor') && project.getProperty('twofactor') == 'enabled') {
|
|
copy {
|
|
from './properties/basicauth/twofactor/'
|
|
into 'src/main/resources/'
|
|
include '*.properties'
|
|
}
|
|
} else {
|
|
copy {
|
|
from './properties/basicauth/'
|
|
into 'src/main/resources/'
|
|
include '*.properties'
|
|
}
|
|
}
|
|
}
|
|
|
|
modernizer {
|
|
includeTestClasses = true
|
|
failOnViolations = true
|
|
|
|
violationLogLevel="error"
|
|
|
|
javaVersion = project.targetCompatibility
|
|
|
|
ignorePackages = []
|
|
ignoreClassNamePatterns = [
|
|
'.*AbstractPersistableCustom'
|
|
]
|
|
ignoreGeneratedClasses = true
|
|
|
|
exclusions = []
|
|
exclusionPatterns = [
|
|
// To be removed when https://issues.apache.org/jira/browse/FINERACT-826 is fixed
|
|
'org/joda/time/.*'
|
|
]
|
|
}
|
|
|
|
task dist(type:Zip){
|
|
baseName = 'fineractplatform'
|
|
version = qualifyVersionIfNecessary(releaseVersion)
|
|
includeEmptyDirs = true
|
|
from('../') {
|
|
fileMode = 0755
|
|
include '*.md'
|
|
}
|
|
from('src/main/dist') {
|
|
fileMode = 0755
|
|
include '*'
|
|
}
|
|
from('../apps') {
|
|
fileMode = 0755
|
|
include '**/*'
|
|
into('apps')
|
|
}
|
|
from('../api-docs/') {
|
|
fileMode = 0755
|
|
include '*'
|
|
into('api-docs')
|
|
}
|
|
from('../fineract-db/') {
|
|
fileMode = 0755
|
|
include '*.sql'
|
|
into('database')
|
|
}
|
|
from('src/main/resources/sql/migrations') {
|
|
fileMode = 0755
|
|
include '**/*'
|
|
into('database/migrations')
|
|
}
|
|
|
|
from war.outputs.files
|
|
into(baseName + '-' + version)
|
|
}
|
|
|
|
compileJava{
|
|
dependsOn rat
|
|
}
|
|
/*
|
|
pmd {
|
|
sourceSets = [sourceSets.main]
|
|
}
|
|
*/
|
|
|
|
war {
|
|
from('../licenses/binary/') { // notice the parens
|
|
into "WEB-INF/licenses/binary/" // no leading slash
|
|
}
|
|
from('../LICENSE_RELEASE') { // notice the parens
|
|
into "WEB-INF/" // no leading slash
|
|
}
|
|
from('../NOTICE_RELEASE') { // notice the parens
|
|
into "WEB-INF/" // no leading slash
|
|
}
|
|
rename ('LICENSE_RELEASE', 'LICENSE')
|
|
rename ('NOTICE_RELEASE', 'NOTICE')
|
|
|
|
from('../DISCLAIMER') { // notice the parens
|
|
into "WEB-INF/" // no leading slash
|
|
}
|
|
war.finalizedBy(bootWar)
|
|
}
|
|
|
|
license {
|
|
header rootProject.file('../APACHE_LICENSETEXT.md')
|
|
excludes([
|
|
"**/git.properties",
|
|
"**/*.html",
|
|
"**/*.mustache",
|
|
"**/package-info.java",
|
|
"**/keystore.jks",
|
|
"**/swagger-ui/**",
|
|
])
|
|
strictCheck true
|
|
}
|
|
|
|
task licenseFormatBuildScripts (type:nl.javadude.gradle.plugins.license.License) {
|
|
source = fileTree(dir: '../', includes: ['**/*.bat', '**/*.sh', '**/*.sql'])
|
|
}
|
|
licenseFormat.dependsOn licenseFormatBuildScripts
|
|
|
|
tomcatRun {
|
|
httpPort = 8080
|
|
httpsPort = 8443
|
|
stopPort = 8081
|
|
stopKey= 'stopKey'
|
|
enableSSL = true
|
|
}
|
|
|
|
tomcatRunWar {
|
|
httpPort = 8080
|
|
httpsPort = 8443
|
|
stopPort = 8081
|
|
stopKey= 'stopKey'
|
|
enableSSL = true
|
|
keystoreFile = file('src/main/resources/keystore.jks')
|
|
keystorePass = 'openmf'
|
|
}
|
|
|
|
task tomcatRunWarAsDaemonForIntegrationTest(type: com.bmuschko.gradle.tomcat.tasks.TomcatRunWar) {
|
|
httpPort = 8080
|
|
httpsPort = 8443
|
|
stopPort = 8081
|
|
stopKey= 'stopKey'
|
|
enableSSL = true
|
|
keystoreFile = file('src/main/resources/keystore.jks')
|
|
keystorePass = 'openmf'
|
|
daemon = true
|
|
}
|
|
|
|
task tomcatStopAfterIntegrationTest(type: com.bmuschko.gradle.tomcat.tasks.TomcatStop) {
|
|
stopPort = 8081
|
|
stopKey = 'stopKey'
|
|
}
|
|
|
|
/* 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
|
|
|
|
/* Exclude maria db and embedded tomcat related files for non dev builds */
|
|
if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) {
|
|
sourceSets {
|
|
main {
|
|
java {
|
|
exclude '**/Server*'
|
|
exclude '**/MariaDB4j*'
|
|
exclude '**/EmbeddedTomcatWithSSLConfiguration.java'
|
|
}
|
|
}
|
|
test {
|
|
java {
|
|
exclude '**/core/boot/tests/**'
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
integrationTest {
|
|
compileClasspath += main.output + test.output
|
|
runtimeClasspath += main.output + test.output
|
|
}
|
|
}
|
|
|
|
configurations {
|
|
integrationTestCompile.extendsFrom testCompile
|
|
integrationTestRuntime.extendsFrom testRuntime
|
|
}
|
|
|
|
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)."
|
|
dependsOn war
|
|
dependsOn tomcatRunWarAsDaemonForIntegrationTest
|
|
tasks.findByName('tomcatRunWarAsDaemonForIntegrationTest').mustRunAfter 'war'
|
|
finalizedBy tomcatStopAfterIntegrationTest
|
|
|
|
testClassesDirs = project.sourceSets.integrationTest.output.classesDirs
|
|
classpath = project.sourceSets.integrationTest.runtimeClasspath
|
|
}
|
|
|
|
integrationTest {
|
|
testLogging { // FINERACT-927
|
|
events "skipped", "failed"
|
|
showStandardStreams = false
|
|
exceptionFormat "full"
|
|
}
|
|
}
|
|
test {
|
|
testLogging { // FINERACT-927
|
|
events "skipped", "failed"
|
|
showStandardStreams = false
|
|
exceptionFormat "full"
|
|
}
|
|
}
|
|
|
|
import com.github.spotbugs.SpotBugsTask
|
|
import groovy.sql.Sql
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
configurations {
|
|
driver
|
|
}
|
|
dependencies {
|
|
driver 'org.drizzle.jdbc:drizzle-jdbc:1.4'
|
|
checkstyle 'com.puppycrawl.tools:checkstyle:8.28'
|
|
checkstyle 'com.github.sevntu-checkstyle:sevntu-checks:1.36.0'
|
|
}
|
|
|
|
URLClassLoader loader = GroovyObject.class.classLoader
|
|
configurations.driver.each {File file ->
|
|
loader.addURL(file.toURL())
|
|
}
|
|
|
|
task createDB {
|
|
description= "Creates the Database. Needs database name to be passed (like: -PdbName=someDBname)"
|
|
doLast {
|
|
def sql = Sql.newInstance( 'jdbc:mysql:thin://localhost:3306/', mysqlUser, mysqlPassword, 'org.drizzle.jdbc.DrizzleDriver' )
|
|
sql.execute( 'create database '+"`$dbName`" )
|
|
}
|
|
}
|
|
|
|
task dropDB {
|
|
description= "Drops the specified database. The database name has to be passed (like: -PdbName=someDBname)"
|
|
doLast {
|
|
def sql = Sql.newInstance( 'jdbc:mysql:thin://localhost:3306/', mysqlUser, mysqlPassword, 'org.drizzle.jdbc.DrizzleDriver' )
|
|
sql.execute( 'DROP DATABASE '+"`$dbName`")
|
|
}
|
|
}
|
|
task setBlankPassword {
|
|
doLast {
|
|
def sql = Sql.newInstance( 'jdbc:mysql:thin://localhost:3306/', mysqlUser, mysqlPassword, 'org.drizzle.jdbc.DrizzleDriver' )
|
|
sql.execute('USE `fineract_tenants`')
|
|
sql.execute('UPDATE fineract_tenants.tenants SET schema_server = \'localhost\', schema_server_port = \'3306\', schema_username = \'mifos\', schema_password = \'mysql\' WHERE id=1;')
|
|
}
|
|
}
|
|
|
|
|
|
/*
|
|
* Support publication of artifacts versioned by topic branch.
|
|
* CI builds supply `-P BRANCH_NAME=<TOPIC>` to gradle at build time.
|
|
* If <TOPIC> starts with 'MIFOSX-', change version
|
|
* from BUILD-SNAPSHOT => <TOPIC>-SNAPSHOT
|
|
* e.g. 1.1.0.BUILD-SNAPSHOT => 1.0.0.MIFOSX-1234-SNAPSHOT
|
|
*/
|
|
def qualifyVersionIfNecessary(version) {
|
|
|
|
if (rootProject.hasProperty("BRANCH_NAME")) {
|
|
def qualifier = rootProject.getProperty("BRANCH_NAME")
|
|
if (qualifier.startsWith("MIFOSX-")) {
|
|
return version.replace('BUILD', qualifier)
|
|
}
|
|
}
|
|
return version
|
|
}
|
|
|
|
springBoot {
|
|
mainClassName = 'org.apache.fineract.ServerWithMariaDB4jApplication'
|
|
}
|
|
|
|
bootWar {
|
|
mainClassName = 'org.apache.fineract.ServerWithMariaDB4jApplication'
|
|
}
|
|
|
|
// To generate an HTML report instead of XML
|
|
tasks.withType(SpotBugsTask) {
|
|
reports.xml.enabled = false
|
|
reports.html.enabled = true
|
|
reportLevel = "high"
|
|
}
|
|
|
|
gitProperties {
|
|
gitPropertiesResourceDir = "$buildDir/classes/java/main/resources"
|
|
dateFormat = "yyyy-MM-dd'T'HH:mmZ"
|
|
dateFormatTimeZone = "GMT"
|
|
failOnNoGitDirectory = false
|
|
}
|
|
|
|
// make sure the generateGitProperties task always executes (even when git.properties is not changed)
|
|
generateGitProperties.outputs.upToDateWhen { false }
|