plugins { id 'java-library' id 'org.asciidoctor.jvm.convert' version '3.3.2' } description = "Spring for GraphQL reference documentation" configurations { dependencyManagement { canBeConsumed = false canBeResolved = false visible = false } matching { it.name.endsWith("Classpath") }.all { it.extendsFrom(dependencyManagement) } asciidoctorExtensions } dependencies { dependencyManagement(enforcedPlatform(dependencies.project(path: ":platform"))) api project(':spring-graphql') api project(':spring-graphql-test') api 'org.springframework:spring-webflux' api 'org.springframework:spring-webmvc' api 'org.springframework:spring-websocket' api 'org.springframework:spring-messaging' api 'org.springframework.data:spring-data-commons' api 'com.querydsl:querydsl-core' asciidoctorExtensions 'io.spring.asciidoctor.backends:spring-asciidoctor-backends:0.0.4' } jar { enabled = false } javadoc { enabled = false } ext.javadocLinks = [ "https://docs.oracle.com/javase/8/docs/api/", "https://javadoc.io/doc/com.graphql-java/graphql-java/${graphQlJavaVersion}/", "https://docs.spring.io/spring-boot/docs/${springBootVersion}/api/", "https://docs.spring.io/spring-framework/docs/5.3.x/javadoc-api/" ] as String[] /** * Produce Javadoc for all Spring for GraphQL modules in "build/docs/javadoc" */ task api(type: Javadoc) { group = "Documentation" description = "Generates aggregated Javadoc API documentation." title = "${rootProject.description} ${version} API" dependsOn { moduleProjects.collect { it.tasks.getByName("jar") } } options { encoding = "UTF-8" memberLevel = JavadocMemberLevel.PROTECTED author = true header = rootProject.description use = true splitIndex = true links(project.ext.javadocLinks) addStringOption('Xdoclint:none', '-quiet') } source = moduleProjects.collect { project -> project.sourceSets.main.allJava } classpath = moduleProjects.collect { project -> project.sourceSets.main.compileClasspath }.sum() maxMemory = "1024m" destinationDir = file("$buildDir/docs/javadoc") } /** * Generate the Spring for GraphQL Reference documentation from "src/docs/asciidoc" * in "build/docs/reference/html". */ asciidoctor { configurations 'asciidoctorExtensions' baseDirFollowsSourceDir() sources { include 'index.adoc' } logDocuments = true outputOptions { backends "spring-html" } outputDir "$buildDir/docs/reference/html" attributes 'spring-graphql-version': project.version, 'spring-boot-version': springBootVersion, 'spring-framework-version': springFrameworkVersion } asciidoctor.mustRunAfter "check" /** * Zip all docs into a single archive */ task docsZip(type: Zip, dependsOn: ['api', 'asciidoctor']) { group = "Distribution" description = "Builds -${archiveClassifier} archive containing api and reference " + "for deployment at https://docs.spring.io/spring-graphql/docs." from (api) { into "api" } from ("$asciidoctor.outputDir") { into "reference/html" } } publishing { publications { mavenJava(MavenPublication) { artifact docsZip } } }