118 lines
3.1 KiB
Groovy
118 lines
3.1 KiB
Groovy
|
plugins {
|
||
|
id 'java-platform'
|
||
|
id 'io.freefair.aggregate-javadoc' version '8.2.2'
|
||
|
}
|
||
|
|
||
|
description = "Spring Framework API Docs"
|
||
|
|
||
|
apply from: "${rootDir}/gradle/publications.gradle"
|
||
|
|
||
|
repositories {
|
||
|
maven {
|
||
|
url "https://repo.spring.io/release"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
dependencies {
|
||
|
rootProject.subprojects.findAll { it.name.startsWith("spring-") }.each { moduleProject ->
|
||
|
javadoc moduleProject
|
||
|
}
|
||
|
}
|
||
|
|
||
|
javadoc {
|
||
|
title = "${rootProject.description} ${version} API"
|
||
|
options {
|
||
|
encoding = "UTF-8"
|
||
|
memberLevel = JavadocMemberLevel.PROTECTED
|
||
|
author = true
|
||
|
header = rootProject.description
|
||
|
use = true
|
||
|
overview = "framework-docs/src/docs/api/overview.html"
|
||
|
splitIndex = true
|
||
|
links(rootProject.ext.javadocLinks)
|
||
|
addBooleanOption('Xdoclint:syntax,reference', true) // only check syntax and reference with doclint
|
||
|
addBooleanOption('Werror', true) // fail build on Javadoc warnings
|
||
|
}
|
||
|
maxMemory = "1024m"
|
||
|
destinationDir = file("$buildDir/docs/javadoc")
|
||
|
doFirst {
|
||
|
classpath += files(
|
||
|
// ensure the javadoc process can resolve types compiled from .aj sources
|
||
|
project(":spring-aspects").sourceSets.main.output
|
||
|
)
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Produce KDoc for all Spring Framework modules in "build/docs/kdoc"
|
||
|
*/
|
||
|
rootProject.tasks.dokkaHtmlMultiModule.configure {
|
||
|
dependsOn {
|
||
|
tasks.named("javadoc")
|
||
|
}
|
||
|
moduleName.set("spring-framework")
|
||
|
outputDirectory.set(project.file("$buildDir/docs/kdoc"))
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Zip all Java docs (javadoc & kdoc) into a single archive
|
||
|
*/
|
||
|
tasks.register('docsZip', Zip) {
|
||
|
dependsOn = ['javadoc', rootProject.tasks.dokkaHtmlMultiModule]
|
||
|
group = "distribution"
|
||
|
description = "Builds -${archiveClassifier} archive containing api and reference " +
|
||
|
"for deployment at https://docs.spring.io/spring-framework/docs/."
|
||
|
|
||
|
archiveBaseName.set("spring-framework")
|
||
|
archiveClassifier.set("docs")
|
||
|
from("src/dist") {
|
||
|
include "changelog.txt"
|
||
|
}
|
||
|
from(javadoc) {
|
||
|
into "javadoc-api"
|
||
|
}
|
||
|
from(rootProject.tasks.dokkaHtmlMultiModule.outputDirectory) {
|
||
|
into "kdoc-api"
|
||
|
}
|
||
|
}
|
||
|
|
||
|
/**
|
||
|
* Zip all Spring Framework schemas into a single archive
|
||
|
*/
|
||
|
tasks.register('schemaZip', Zip) {
|
||
|
group = "distribution"
|
||
|
archiveBaseName.set("spring-framework")
|
||
|
archiveClassifier.set("schema")
|
||
|
description = "Builds -${archiveClassifier} archive containing all " +
|
||
|
"XSDs for deployment at https://springframework.org/schema."
|
||
|
duplicatesStrategy DuplicatesStrategy.EXCLUDE
|
||
|
moduleProjects.each { module ->
|
||
|
def Properties schemas = new Properties();
|
||
|
|
||
|
module.sourceSets.main.resources.find {
|
||
|
(it.path.endsWith("META-INF/spring.schemas") || 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)) || it.path.endsWith(schemas.get(key).replaceAll('\\/', '\\\\')))
|
||
|
}
|
||
|
assert xsdFile != null
|
||
|
into(shortName) {
|
||
|
from xsdFile.path
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
publishing {
|
||
|
group "distribution"
|
||
|
publications {
|
||
|
mavenJava(MavenPublication) {
|
||
|
artifact docsZip
|
||
|
artifact schemaZip
|
||
|
}
|
||
|
}
|
||
|
}
|