blob: fe07112cf0f7149955f0a961aa60cb48464bbdd1 [file] [log] [blame]
/*
* 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.tools.ant.filters.ReplaceTokens
plugins {
id 'org.apache.groovy-distribution'
id 'org.apache.groovy-published-library'
id 'org.apache.groovy-asciidoctor'
}
docAggregation {
excludeFromJavadoc '**/*.html',
'**/*.groovy',
'*.g4',
'**/GroovyRecognizer.java', // generated file
'**/*.tokens', // Antlr generated file
'**/*.interp' // Antlr generated file
}
tasks.named('asciidoctor') {
attributes reldir_root: '.',
reldir_jmx: '.',
reldir_swing: '.',
reldir_console: '.'
}
distribution {
docs ':', 'org.codehaus.groovy.runtime.ArrayGroovyMethods',
'org.codehaus.groovy.runtime.DefaultGroovyMethods',
'org.codehaus.groovy.runtime.DefaultGroovyStaticMethods',
'org.codehaus.groovy.runtime.EncodingGroovyMethods',
'org.codehaus.groovy.runtime.IOGroovyMethods',
'org.codehaus.groovy.runtime.ProcessGroovyMethods',
'org.codehaus.groovy.runtime.ResourceGroovyMethods',
'org.codehaus.groovy.runtime.SocketGroovyMethods',
'org.codehaus.groovy.runtime.StreamGroovyMethods',
'org.codehaus.groovy.runtime.StringGroovyMethods',
'org.codehaus.groovy.vmplugin.v8.PluginDefaultGroovyMethods',
'org.codehaus.groovy.vmplugin.v9.PluginDefaultGroovyMethods',
'org.codehaus.groovy.vmplugin.v10.PluginDefaultGroovyMethods'
docs ':groovy-dateutil', 'org.apache.groovy.dateutil.extensions.DateUtilExtensions'
docs ':groovy-datetime', 'org.apache.groovy.datetime.extensions.DateTimeExtensions',
'org.apache.groovy.datetime.extensions.DateTimeStaticExtensions'
docs ':groovy-sql', 'org.apache.groovy.sql.extensions.SqlExtensions'
docs ':groovy-swing', 'org.apache.groovy.swing.extensions.SwingExtensions'
docs ':groovy-xml', 'org.apache.groovy.xml.extensions.XmlExtensions'
docs ':groovy-nio', 'org.apache.groovy.nio.extensions.NioExtensions'
docs ':groovy-jsr223', 'org.codehaus.groovy.jsr223.ScriptExtensions',
'org.codehaus.groovy.jsr223.ScriptStaticExtensions'
distSpec = copySpec {
from rootProject.file("licenses/LICENSE-BINZIP")
from rootProject.file("notices/NOTICE-BINZIP")
rename '^([A-Z]+)-([^.]*)', '$1'
into('lib') {
from(configurations.distributionsRuntimeClasspath) {
exclude {
it.file.name.contains('activation') ||
it.file.name.contains('livetribe-jsr223') ||
it.file.name.startsWith('openbeans-') ||
it.file.name.startsWith('asm-') ||
it.file.name.startsWith('antlr4-') ||
it.file.name.startsWith('picocli-')
}
}
from rootProject.file('src/bin/groovy.icns')
}
rootProject.allprojects {
pluginManager.withPlugin('org.apache.groovy-base') {
if (groovyLibrary.hasGrooid()) {
into('grooid') {
from tasks.named('grooidJar')
}
}
}
}
into('conf') {
from rootProject.file('src/conf')
}
into('bin') {
from(rootProject.file('src/bin')) {
filter(ReplaceTokens, tokens: [GROOVYJAR: "groovy-${versions.groovy}.jar".toString()])
fileMode = 0755
exclude 'groovy.icns'
}
from projects.groovyDocgenerator.dependencyProject.file('src/main/resources/org/apache/groovy/docgenerator/groovy.ico')
}
into('licenses') {
from rootProject.file('licenses')
include 'antlr4-license.txt'
include 'asm-license.txt'
include 'hamcrest-license.txt'
include 'jline2-license.txt'
include 'jsr166y-license.txt'
include 'jsr223-license.txt'
include 'junit4-license.txt'
include 'junit5-license.txt'
include 'xstream-license.txt'
}
}
docSpec = copySpec {
into('html/api') {
from tasks.named('javadocAll')
}
into('html/gapi') {
from tasks.named('groovydocAll')
}
into('html/documentation') {
from configurations.allAsciidoc
from tasks.named('asciidoctor')
from tasks.named('asciidoctorPdf')
exclude '.asciidoctor'
}
into('html/groovy-jdk') {
from tasks.named('docGDK')
}
into('licenses') {
from rootProject.file('licenses')
include 'asciidoc-style-license.txt'
include 'jquery-js-license.txt'
include 'normalize-stylesheet-license.txt'
}
from rootProject.file("licenses/LICENSE-DOC")
from rootProject.file("notices/NOTICE-BASE")
rename 'LICENSE-DOC', 'LICENSE'
rename 'NOTICE-BASE', 'NOTICE'
}
srcSpec = copySpec {
rootProject.subprojects {
into("subprojects/${project.projectDir.name}") {
from(project.projectDir) {
exclude 'build',
'target',
'out', // used by Intellij IDEA
'**/*.iml', // used by Intellij IDEA
'**/*.ipr', // used by Intellij IDEA
'**/*.iws', // used by Intellij IDEA
'.settings', // used by Eclipse
'.classpath', // used by Eclipse
'.gradle' // used by Gradle
}
}
}
['xdocs',
'config',
'build-logic',
'licenses',
'notices',
'security',
'gradle',
'src',
'bootstrap',
'build.gradle',
'settings.gradle',
'versions.properties',
'gradle.properties',
'LICENSE',
'NOTICE',
'README.adoc'].each {
def file = rootProject.file(it)
from(file) {
if (file.directory) {
into file.name
exclude 'build',
'target',
'wrapper', // used by Gradle
'**/*.iml', // used by Intellij IDEA
'**/*.ipr', // used by Intellij IDEA
'**/*.iws', // used by Intellij IDEA
'.settings', // used by Eclipse
'.classpath', // used by Eclipse
'.gradle', // used by Gradle
'*.gpg' // used by Gradle
}
}
}
}
}
tasks.withType(AbstractArchiveTask).configureEach {
preserveFileTimestamps = false
reproducibleFileOrder = true
}