| /* |
| * 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. |
| */ |
| |
| /* |
| * The groovy project uses Gradle for building, and Gradle itself |
| * depends on a specific Groovy configuration to build Groovy projects. |
| * |
| * In this build, we first build a "bootstrap compiler", which provides |
| * a minimal Groovy runtime. |
| * |
| * But because Groovy also repackages some internal libraries, we use |
| * internally different jars for compiling Groovy with the bootstrapped |
| * Groovy than what is published externally. |
| */ |
| |
| def internalPublication = Attribute.of("org.apache.groovy.internal", Boolean) |
| |
| def makeInternal = { Configuration cnf -> |
| cnf.attributes { |
| it.attribute(internalPublication, true) |
| } |
| } |
| |
| configurations { |
| pluginManager.withPlugin('java-library') { |
| makeInternal(apiElements) |
| } |
| makeInternal(runtimeElements) |
| makeInternal(compileClasspath) |
| makeInternal(runtimeClasspath) |
| makeInternal(testCompileClasspath) |
| makeInternal(testRuntimeClasspath) |
| pluginManager.withPlugin('java-test-fixtures') { |
| makeInternal(testFixturesCompileClasspath) |
| makeInternal(testFixturesRuntimeClasspath) |
| } |
| groovyCompilerClasspath { |
| canBeConsumed = false |
| canBeResolved = true |
| attributes { |
| attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category, Category.LIBRARY)) |
| attribute(LibraryElements.LIBRARY_ELEMENTS_ATTRIBUTE, objects.named(LibraryElements, LibraryElements.JAR)) |
| attribute(Bundling.BUNDLING_ATTRIBUTE, objects.named(Bundling, Bundling.EXTERNAL)) |
| attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage, Usage.JAVA_RUNTIME)) |
| attribute(internalPublication, true) |
| } |
| } |
| } |
| |
| dependencies { |
| if (project != rootProject) { |
| groovyCompilerClasspath project(":") |
| } |
| } |
| |
| tasks.withType(AbstractCompile).configureEach { |
| options.encoding = 'UTF-8' |
| // options.compilerArgs << '-Xlint:unchecked' |
| // options.compilerArgs << '-Xlint:deprecation' |
| // options.compilerArgs << '-Xlint:-options' |
| } |
| |
| tasks.withType(GroovyCompile).configureEach { |
| groovyOptions.forkOptions.jvmArgs += ["-Dgroovy.antlr4.cache.threshold=100", "-Dgroovy.target.bytecode=${sharedConfiguration.groovyTargetBytecodeVersion.get()}" as String] |
| groovyOptions.fork(memoryMaximumSize: sharedConfiguration.groovycMaxMemory.get()) |
| groovyClasspath = configurations.groovyCompilerClasspath |
| |
| options.incremental = true |
| } |