/** * 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 Command' apply plugin: 'java' apply plugin: 'eclipse' apply plugin: 'me.champeau.jmh' configurations { asciidoctorExtensions 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 } apply from: 'dependencies.gradle' // Configuration for the modernizer plugin // https://github.com/andygoossens/gradle-modernizer-plugin modernizer { ignoreClassNamePatterns = [ '.*AbstractPersistableCustom', '.*EntityTables', '.*domain.*' ] } // If we are running Gradle within Eclipse to enhance classes with OpenJPA, // set the classes directory to point to Eclipse's default build directory if (project.hasProperty('env') && project.getProperty('env') == 'eclipse') { sourceSets.main.java.outputDir = new File(rootProject.projectDir, "fineract-command/bin/main") } if (!(project.hasProperty('env') && project.getProperty('env') == 'dev')) { sourceSets { test { java { exclude '**/core/boot/tests/**' } } } } jmh { // include = ['.*'] // Include all benchmarks (regex-based filter) warmupIterations = 2 // Number of warm-up iterations iterations = 3 // Number of measurement iterations fork = 1 // Number of forks 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 ) }