| task doc(dependsOn: ['javadocAll', 'groovydocAll', 'docGDK']) { |
| if (JavaVersion.current().java7Compatible) { |
| dependsOn 'asciidocAll', 'assembleAsciidoc' |
| } |
| ext.footer = 'Copyright © 2003-2014 The Codehaus. 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 |
| 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/apidocs/', |
| '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/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/apidocs/', '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.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') { |
| arg(value: '-title') |
| arg(value: 'Groovy JDK enhancements') |
| arg(value: '-link') |
| arg(value: 'groovy,org.codehaus.groovy=http://groovy.codehaus.org/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') |
| } |
| } |
| } |
| } 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 { |
| tasks.withType(Javadoc).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) |
| } |
| } |
| } |
| |
| 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') |
| } |
| } |
| } |