| /* |
| * 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. |
| */ |
| import org.apache.geode.gradle.plugins.DependencyConstraints |
| |
| if (project.name.endsWith("geode-all-bom")) { |
| // This anti-pattern is a workaround -- java-platform must be applied before java or java-library |
| // to avoid conflicts over redefining certain configurations. |
| // Evaluation as to whether java-platform should be applied at all is left to GEODE-6611. |
| apply plugin: 'java-platform' |
| } |
| apply plugin: 'java-library' |
| |
| sourceCompatibility = 1.8 |
| targetCompatibility = 1.8 |
| compileJava.options.encoding = 'UTF-8' |
| |
| dependencies { |
| // log4j-core has an annotation processor that is passed on the compile-classpath via geode-core and others. |
| // Fix Gradle warning here until we clean up our own classpath |
| annotationProcessor 'org.apache.logging.log4j:log4j-core:' + DependencyConstraints.get('log4j.version') |
| } |
| |
| String javaVersion = System.properties['java.version'] |
| if (javaVersion.startsWith("1.8.0") && javaVersion.split("-")[0].split("_")[1].toInteger() < 121) { |
| throw new GradleException("Java version 1.8.0_121 or later required, but was " + javaVersion) |
| } |
| |
| // apply compiler options |
| gradle.taskGraph.whenReady({ graph -> |
| tasks.withType(JavaCompile).each { javac -> |
| javac.configure { |
| sourceCompatibility '1.8' |
| targetCompatibility '1.8' |
| options.encoding = 'UTF-8' |
| } |
| javac.options.incremental = true |
| javac.options.fork = true |
| javac.options.forkOptions.with({ |
| memoryMaximumSize = "768m" |
| }) |
| if (project.hasProperty('compileJVM') && !compileJVM.trim().isEmpty()) { |
| javac.options.forkOptions.executable = compileJVM + "/bin/javac" |
| } |
| } |
| }) |
| |
| // apply default manifest |
| gradle.taskGraph.whenReady({ graph -> |
| tasks.withType(Jar).each { jar -> |
| jar.doFirst { |
| manifest { |
| attributes( |
| "Manifest-Version": "1.0", |
| "Created-By": System.getProperty("user.name"), |
| "Title": rootProject.name, |
| "Version": version, |
| "Organization": productOrg |
| ) |
| } |
| } |
| jar.metaInf { |
| from("$rootDir/LICENSE") |
| if (jar.source.filter({ it.name.contains('NOTICE') }).empty) { |
| from("$rootDir/NOTICE") |
| } |
| } |
| } |
| }) |
| |
| configurations { |
| testOutput { |
| extendsFrom testCompile |
| description 'a dependency that exposes test artifacts' |
| } |
| } |
| |
| // This ensures that javadoc and source jars also have any prefix paths stripped and will |
| // be created as libs/foo-sources.jar instead of libs/extensions/foo-sources.jar for example. |
| tasks.all { task -> |
| if (task instanceof Jar) { |
| baseName = project.name |
| } |
| } |
| |
| task jarTest(type: Jar, dependsOn: testClasses) { |
| description 'Assembles a jar archive of test classes.' |
| from sourceSets.test.output |
| classifier 'test' |
| } |
| |
| artifacts { |
| testOutput jarTest |
| } |
| |
| javadoc { |
| destinationDir = file("$buildDir/javadoc") |
| options.addStringOption('Xdoclint:none', '-quiet') |
| options.encoding = 'UTF-8' |
| exclude "**/internal/**" |
| |
| classpath += configurations.compileOnly |
| } |