// Docbook and Javadoc building and uploading tasks apply plugin: 'base' task docs { dependsOn 'manual:reference', 'apidocs', 'guides:asciidoctor' } project('manual') { apply plugin: 'base' apply plugin: 'org.asciidoctor.gradle.asciidoctor' apply plugin: 'docbook-reference' ext.expandPlaceholders = "" asciidoctorj { version = '1.5.2' } asciidoctor { backends = ['docbook5'] def ghTag = snapshotBuild ? 'master' : project.version def ghUrl = "https://github.com/spring-projects/spring-security/tree/$ghTag" options = [ eruby: 'erubis', attributes: [ copycss : '', icons : 'font', 'source-highlighter': 'prettify', sectanchors : '', toc2: '', idprefix: '', idseparator: '-', doctype: 'book', numbered: '', 'spring-security-version' : project.version, 'spring-version' : springVersion, revnumber : project.version, 'gh-url': ghUrl, 'gh-samples-url': "$ghUrl/samples", docinfo : "" ] ] } reference { sourceDir = new File(asciidoctor.outputDir , 'docbook5') pdfFilename = "spring-security-reference.pdf" epubFilename = "spring-security-reference.epub" expandPlaceholders = "" } afterEvaluate { tasks.findAll { it.name.startsWith("reference") }.each{ it.dependsOn.add("asciidoctor") } } ext.spec = copySpec { from (reference) { into 'reference' } } } task apidocs(type: Javadoc) { destinationDir = new File(buildDir, 'apidocs') title = "Spring Security $version API" logging.captureStandardError LogLevel.INFO logging.captureStandardOutput LogLevel.INFO source coreModuleProjects.collect { project -> project.sourceSets.main.allJava } classpath = files(coreModuleProjects.collect { project -> project.sourceSets.main.compileClasspath }) options { outputLevel = org.gradle.external.javadoc.JavadocOutputLevel.QUIET links = [ "http://static.springframework.org/spring/docs/3.2.x/javadoc-api", "http://static.springsource.org/spring-ldap/docs/1.3.x/apidocs/", "http://download.oracle.com/javase/6/docs/api/" ] groups = [ 'Spring Security Core':[ 'org.springframework.security.core*', 'org.springframework.security.authentication*', 'org.springframework.security.access*', 'org.springframework.security.remoting*', 'org.springframework.security.provisioning*', 'org.springframework.security.util*'], 'Spring Security Web':['org.springframework.security.web*'], 'Spring Security LDAP':['org.springframework.security.ldap*'], 'Spring Security Crypto':['org.springframework.security.crypto*'], 'Spring Security OpenID':['org.springframework.security.openid*'], 'Spring Security CAS':['org.springframework.security.cas*'], 'Spring Security ACL':['org.springframework.security.acls*'], 'Spring Security Config':['org.springframework.security.config*'], 'Spring Security Taglibs':['org.springframework.security.taglibs*'], ] addStringOption('-quiet') } } if (JavaVersion.current().isJava8Compatible()) { // Turn off doclint in JDK 8 Javadoc (too strict on checks) apidocs.options.addStringOption('Xdoclint:none', '-quiet') } ext.apiSpec = copySpec { into('apidocs') { from(apidocs.destinationDir) } } assemble.dependsOn = [apidocs, 'manual:asciidoctor'] task docsZip(type: Zip) { dependsOn docs evaluationDependsOn('guides') group = 'Distribution' baseName = rootProject.name classifier = 'docs' description = "Builds -${classifier} archive containing api and reference " + "for deployment at static.springframework.org/spring-security/site/docs." with(project(':docs').apiSpec) with(project(':docs:manual').spec) with(project(':docs:guides').spec) } task schemaZip(type: Zip) { group = 'Distribution' baseName = rootProject.name classifier = 'schema' description = "Builds -${classifier} archive containing all " + "XSDs for deployment at static.springframework.org/schema." coreModuleProjects.each { module -> def Properties schemas = new Properties(); module.sourceSets.main.resources.find { it.path.endsWith('META-INF/spring.schemas') }?.withInputStream { schemas.load(it) } for (def key : schemas.keySet()) { def shortName = key.replaceAll(/http.*schema.(.*).spring-.*/, '$1') assert shortName != key File xsdFile = module.sourceSets.main.resources.find { it.path.endsWith(schemas.get(key)) } assert xsdFile != null into (shortName) { from xsdFile.path } } } }