blob: f0a4f9e8e3806cd14281ca947975cf5d2132d2a1 [file] [log] [blame]
task doc(dependsOn: ['javadocAll', 'groovydocAll', 'docGDK']) {
ext.footer = "Copyright © 2003-2013 The Codehaus. All rights reserved."
ext.title = "Groovy ${groovyVersion}"
}
def javadocSpec = {
maxMemory = javaDoc_mx
project.configure(options) {
windowTitle = doc.title
docTitle = doc.title
encoding = "UTF-8"
author = true
version = true
overview = rootProject.file("src/main/overviewj.html")
footer = doc.footer
source = rootProject.useIndy()?'1.7':'1.5'
links("http://docs.oracle.com/javase/7/docs/api/", "http://evgeny-goldin.org/javadoc/ant/api/",
"http://commons.apache.org/proper/commons-cli/javadocs/api-release", "http://junit.org/javadoc/latest/",
"http://docs.oracle.com/javaee/6/api/", "http://www.antlr2.org/javadoc")
}
}
def groovydocSpec = {
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/6/api/", "javax.servlet.", "javax.management."
link "http://docs.oracle.com/javase/7/docs/api/", "java.", "org.xml.", "javax.", "org.w3c."
link "http://evgeny-goldin.org/javadoc/ant/api/", "org.apache.ant.", "org.apache.tools.ant."
link "http://junit.org/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-sql'), project(':groovy-swing')]*.classes)
dependsOn docProjectVersionInfo
ext.destinationDir = "$buildDir/html/groovy-jdk"
inputs.files sourceSets.tools.runtimeClasspath
outputs.dir destinationDir
doLast {task ->
try {
ant {
java(classname: "org.codehaus.groovy.tools.DocGenerator", fork: "true", failonerror: "true",
classpath: (configurations.tools + groovydocAll.groovyClasspath).asPath,
errorproperty: 'edr',
outputproperty: 'odr') {
// 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")
}
}
} 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"
}
}
}
// this will apply the javadoc fix tool to all generated javadocs
// we use it to make sure that the javadocs are not vulnerable independently of the JDK used to build
allprojects {
[Javadoc, Groovydoc].each {
tasks.withType(it).all {
doLast {
logger.lifecycle ("Applying Javadoc fix tool (see http://www.kb.cert.org/vuls/id/225657) into $destinationDir".toString())
def javadocFix = new JavadocFixTool()
javadocFix.recursive = true
javadocFix.doPatch = true
javadocFix.searchAndPatch(destinationDir)
}
}
}
}