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) | |
} | |
} | |
} | |
} |