blob: 814db338ea0bb8253d3db62ed32e6dd55cf0aa1c [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.
*/
task doc(dependsOn: ['javadocAll', 'groovydocAll', 'docGDK']) {
if (JavaVersion.current().java7Compatible) {
dependsOn 'asciidocAll', 'assembleAsciidoc'
}
ext.footer = 'Copyright © 2003-2019 The Apache Software Foundation. All rights reserved.'
ext.title = "Groovy ${groovyVersion}"
}
if (JavaVersion.current().java7Compatible) {
task assembleAsciidoc(type: Copy, dependsOn: 'asciidocAll') {
subprojects {
from project.asciidoctor
}
into "$buildDir/asciidoc"
}
task asciidocAll(dependsOn: 'asciidoctor')
}
def javadocSpec = {
maxMemory = javaDoc_mx
project.configure(options) {
windowTitle = doc.title
docTitle = doc.title
locale = 'en_US'
encoding = 'UTF-8'
author = true
version = true
overview = rootProject.file('src/main/overviewj.html')
footer = doc.footer
source = rootProject.useIndy()?'1.7':'1.6'
links('http://docs.oracle.com/javase/8/docs/api/', 'http://docs.oracle.com/javaee/7/api/',
'http://commons.apache.org/proper/commons-cli/javadocs/api-release/', 'http://junit.org/junit4/javadoc/latest/',
'http://docs.oracle.com/javaee/6/api/', 'http://www.antlr2.org/javadoc/')
}
}
def groovydocSpec = {
// hack to avoid errors when using gradle 3 to get the wrapper
// we won't ever build 2.4.x using a 3+ version - at least not
// without further changes
if (gradle.gradleVersion.startsWith('2.')) {
use = true
if (project != rootProject) source = project.sourceSets.main.allSource
classpath = javadoc.classpath
ext.windowtitle = doc.title
ext.doctitle = doc.title
header = doc.title
footer = doc.footer
overview = rootProject.file('src/main/overview.html')
includePrivate = false
link 'http://docs.oracle.com/javaee/7/api/', 'javax.servlet.', 'javax.management.'
link 'http://docs.oracle.com/javase/8/docs/api/', 'java.', 'org.xml.', 'javax.', 'org.w3c.'
link 'http://docs.groovy-lang.org/docs/ant/api/', 'org.apache.ant.', 'org.apache.tools.ant.'
link 'http://junit.org/junit4/javadoc/latest/', 'org.junit.', 'junit.'
link 'http://www.antlr2.org/javadoc/', 'antlr.'
link 'http://commons.apache.org/proper/commons-cli/javadocs/api-release/', 'org.apache.commons.cli.'
}
}
allprojects {
javadoc javadocSpec
groovydoc groovydocSpec
}
// Root project has an extra 'all' javadoc task
task javadocAll(type: Javadoc)
javadocAll {
destinationDir = new File(buildDir, 'alljavadoc')
source = javadoc.source
classpath = javadoc.classpath
subprojects.each { sp ->
source += sp.javadoc.source
classpath += sp.javadoc.classpath
}
}
javadocAll javadocSpec
// Root project has an extra 'all' groovydoc task
task groovydocAll(type: Groovydoc)
groovydocAll {
dependsOn( { project(':groovy-groovydoc').classes })
dependsOn( { project(':groovy-docgenerator').classes })
destinationDir = new File(buildDir, 'allgroovydoc')
source = groovydoc.source
classpath = groovydoc.classpath
groovyClasspath = groovydoc.groovyClasspath
subprojects.each { sp ->
source += sp.groovydoc.source
classpath += sp.groovydoc.classpath
groovyClasspath += sp.groovydoc.groovyClasspath
}
}
groovydocAll groovydocSpec
// when docgenerator is run by the build, it requires a groovy-release-info file
// but the file is only generated by the 'jar' task, so as a workaround, we copy
// it into the docgenerator classes
task docProjectVersionInfo(type: Copy) {
destinationDir = file("${project(':groovy-docgenerator').buildDir}/classes/main")
into('META-INF') {
from('src/main/META-INF/groovy-release-info.properties') {
filter(rootProject.propertiesFilter, org.apache.tools.ant.filters.ReplaceTokens)
}
}
from('subprojects/groovy-docgenerator/src/main/resources')
}
task docGDK {
// ext.extraDocGDKclasses = []
dependsOn([project(':groovy-groovydoc'), project(':groovy-docgenerator')]*.classes)
// TODO don't hard-code these
dependsOn([project(':groovy-sql'), project(':groovy-xml'), project(':groovy-swing')]*.classes)
if(JavaVersion.current().isJava7Compatible()) {
dependsOn([project(':groovy-nio')]*.classes)
}
dependsOn docProjectVersionInfo
ext.destinationDir = "$buildDir/html/groovy-jdk"
inputs.files sourceSets.main.runtimeClasspath + configurations.tools
outputs.dir destinationDir
doLast { task ->
try {
ant {
java(classname: 'org.codehaus.groovy.tools.DocGenerator',
fork: 'true',
failonerror: 'true',
classpath: (sourceSets.main.runtimeClasspath + configurations.tools + groovydocAll.groovyClasspath).asPath,
errorproperty: 'edr',
outputproperty: 'odr') {
arg(value: '-title')
arg(value: 'Groovy JDK enhancements')
arg(value: '-link')
arg(value: 'groovy,org.codehaus.groovy=http://docs.groovy-lang.org/latest/html/gapi/')
arg(value: '-link')
arg(value: 'java,org.xml,javax,org.w3c=http://docs.oracle.com/javase/7/docs/api/')
// either package name if in core or fully qualified path otherwise
arg(value: 'org.codehaus.groovy.runtime.DefaultGroovyMethods')
arg(value: 'org.codehaus.groovy.runtime.DefaultGroovyStaticMethods')
arg(value: 'org.codehaus.groovy.runtime.DateGroovyMethods')
arg(value: 'org.codehaus.groovy.runtime.EncodingGroovyMethods')
arg(value: 'org.codehaus.groovy.runtime.IOGroovyMethods')
arg(value: 'org.codehaus.groovy.runtime.ProcessGroovyMethods')
arg(value: 'org.codehaus.groovy.runtime.ResourceGroovyMethods')
arg(value: 'org.codehaus.groovy.runtime.SocketGroovyMethods')
arg(value: 'org.codehaus.groovy.runtime.StringGroovyMethods')
arg(value: 'org.codehaus.groovy.vmplugin.v5.PluginDefaultGroovyMethods')
arg(value: 'org.codehaus.groovy.vmplugin.v6.PluginDefaultGroovyMethods')
arg(value: 'org.codehaus.groovy.vmplugin.v6.PluginStaticGroovyMethods')
// TODO don't hard-code these
arg(value: 'subprojects/groovy-sql/src/main/java/org/codehaus/groovy/runtime/SqlGroovyMethods.java')
arg(value: 'subprojects/groovy-swing/src/main/java/org/codehaus/groovy/runtime/SwingGroovyMethods.java')
arg(value: 'subprojects/groovy-xml/src/main/java/org/codehaus/groovy/runtime/XmlGroovyMethods.java')
if(JavaVersion.current().isJava7Compatible()) {
arg(value: 'subprojects/groovy-nio/src/main/java/org/codehaus/groovy/runtime/NioGroovyMethods.java')
}
arg(value: 'subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/ScriptExtensions.java')
arg(value: 'subprojects/groovy-jsr223/src/main/java/org/codehaus/groovy/jsr223/ScriptStaticExtensions.java')
}
}
} finally {
if (ant.properties.odr) {
logger.info 'Out: ' + ant.properties.odr
}
if (ant.properties.edr) {
logger.error 'Err: ' + ant.properties.edr
}
}
copy {
into task.destinationDir
from 'src/tools/org/codehaus/groovy/tools/groovy.ico', 'src/tools/org/codehaus/groovy/tools/stylesheet.css'
}
}
}
// apply javadoc fix tool to generated javadocs - ensures no vulnerability even on old JDK versions
allprojects {
apply plugin: 'javadocHotfix'
}
if (JavaVersion.current().isJava7Compatible()) {
javadocAll.options.source = '1.7'
}
if (JavaVersion.current().isJava8Compatible()) {
allprojects {
tasks.withType(Javadoc) {
// disable the crazy super-strict doclint tool in Java 8
options.addStringOption('Xdoclint:none', '-quiet')
}
}
}