@ -1,76 +1,72 @@
@@ -1,76 +1,72 @@
/ *
* Copyright 2002 - 2019 the original author or authors .
*
* Licensed under the Apache License , Version 2.0 ( the "License" ) ;
* you may not use this file except in compliance with the License .
* You may obtain a copy of the License at
*
* https: // www . apache . org /licenses/ LICENSE - 2.0
*
* Unless required by applicable law or agreed to in writing , software
* distributed under the License is distributed on an "AS IS" BASIS ,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND , either express or implied .
* See the License for the specific language governing permissions and
* limitations under the License .
/ * *
* Produce Javadoc for all Spring Framework modules in "build/docs/javadoc"
* /
task api ( type: Javadoc ) {
group = "Documentation"
description = "Generates aggregated Javadoc API documentation."
title = "${rootProject.description} ${version} API"
dependsOn {
subp rojects. collect {
moduleProjects . collect {
it . tasks . getByName ( "jar" )
}
}
options . encoding = "UTF-8"
options . memberLevel = org . gradle . external . javadoc . JavadocMemberLevel . PROTECTED
options . author = true
options . header = rootProject . description
options . use = true
options . overview = "src/docs/api/overview.html"
options . stylesheetFile = file ( "src/docs/api/stylesheet.css" )
options . splitIndex = true
options . links ( project . ext . javadocLinks )
options . addStringOption ( 'Xdoclint:none' , '-quiet' )
source subprojects . collect { project - >
project . sourceSets . main . allJava
}
maxMemory = "1024m"
destinationDir = new File ( buildDir , "api" )
doFirst {
classpath = files (
// ensure the javadoc process can resolve types compiled from . aj sources
project ( ":spring-aspects" ) . sourceSets . main . output
)
classpath + = files ( subprojects . collect { it . sourceSets . main . compileClasspath } )
classpath + = files ( moduleProjects . collect { it . sourceSets . main . compileClasspath } )
}
options {
encoding = "UTF-8"
memberLevel = JavadocMemberLevel . PROTECTED
author = true
header = rootProject . description
use = true
overview = "src/docs/api/overview.html"
stylesheetFile = file ( "src/docs/api/stylesheet.css" )
splitIndex = true
links ( project . ext . javadocLinks )
addStringOption ( 'Xdoclint:none' , '-quiet' )
if ( JavaVersion . current ( ) . isJava9Compatible ( ) ) {
addBooleanOption ( 'html5' , true )
}
}
source moduleProjects . collect { project - >
project . sourceSets . main . allJava
}
maxMemory = "1024m"
destinationDir = file ( "$buildDir/docs/javadoc" )
}
/ * *
* Produce KDoc for all Spring Framework modules in "build/docs/kdoc"
* /
dokka {
dependsOn {
tasks . getByName ( "api" )
}
doFirst {
classpath = subprojects . collect { project - > project . jar . outputs . files . getFiles ( ) } . flatten ( )
classpath + = files ( subprojects . collect { it . sourceSets . main . compileClasspath } )
classpath = moduleProjects . collect { project - > project . jar . outputs . files . getFiles ( ) } . flatten ( )
classpath + = files ( moduleProjects . collect { it . sourceSets . main . compileClasspath } )
sourceDirs = files ( moduleProjects
. findAll {
it . pluginManager . hasPlugin ( "kotlin" )
}
. collect { project - >
def kotlinDirs = project . sourceSets . main . kotlin . srcDirs . collect ( )
kotlinDirs - = project . sourceSets . main . java . srcDirs
} )
}
moduleName = "spring-framework"
outputFormat = "html"
outputDirectory = "$buildDir/docs/kdoc"
sourceDirs = files ( subprojects . collect { project - >
def kotlinDirs = project . sourceSets . main . kotlin . srcDirs . collect ( )
kotlinDirs - = project . sourceSets . main . java . srcDirs
} )
externalDocumentationLink {
url = new URL ( "https://docs.spring.io/spring-framework/docs/$version/javadoc-api/" )
packageListUrl = new File ( buildDir , "api /package-list" ) . toURI ( ) . toURL ( )
packageListUrl = new File ( buildDir , "docs/javadoc/package-list" ) . toURI ( ) . toURL ( )
}
externalDocumentationLink {
url = new URL ( "https://projectreactor.io/docs/core/release/api/" )
@ -101,6 +97,10 @@ task extractDocResources(type: Sync) {
@@ -101,6 +97,10 @@ task extractDocResources(type: Sync) {
into "$buildDir/asciidoc/build"
}
/ * *
* Produce the Spring Framework Reference documentation
* from "src/docs/asciidoc" into "build/asciidoc/html5"
* /
asciidoctor {
sourceDir "$buildDir/asciidoc/build"
sources {
@ -136,52 +136,54 @@ asciidoctor {
@@ -136,52 +136,54 @@ asciidoctor {
asciidoctor . dependsOn extractDocResources
/ * *
* Zip all docs ( API and reference ) into a single archive
* /
task docsZip ( type: Zip , dependsOn: [ 'api' , 'asciidoctor' , 'dokka' ] ) {
group = "Distribution"
baseName = "spring-framework"
classifier = "docs"
description = "Builds -${classifier} archive containing api and reference " +
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 ( api ) {
into "javadoc-api"
}
from ( "$asciidoctor.outputDir/html5" ) {
into "spring-framework-reference"
}
from ( "$asciidoctor.outputDir/pdf" ) {
into "spring-framework-reference/pdf"
}
from ( dokka ) {
into "kdoc-api"
}
}
/ * *
* Zip all Spring Framework schemas into a single archive
* /
task schemaZip ( type: Zip ) {
group = "Distribution"
baseName = "spring-framework"
classifier = "schema"
description = "Builds -${classifier} archive containing all " +
archiveBaseName . set ( "spring-framework" )
ar chiveC lassifier. set ( "schema" )
description = "Builds -${ar chiveC lassifier} archive containing all " +
"XSDs for deployment at https://springframework.org/schema."
duplicatesStrategy 'exclude'
moduleProjects . each { subproject - >
duplicatesStrategy DuplicatesStrategy . EXCLUDE
moduleProjects . each { module - >
def Properties schemas = new Properties ( ) ;
subproject . sourceSets . main . resources . find {
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 = subproject . sourceSets . main . resources . find {
File xsdFile = module . sourceSets . main . resources . find {
it . path . endsWith ( schemas . get ( key ) )
}
assert xsdFile ! = null
@ -192,15 +194,19 @@ task schemaZip(type: Zip) {
@@ -192,15 +194,19 @@ task schemaZip(type: Zip) {
}
}
/ * *
* Create a distribution zip with everything:
* docs , schemas , jars , source jars , javadoc jars
* /
task distZip ( type: Zip , dependsOn: [ docsZip , schemaZip ] ) {
group = "Distribution"
baseName = "spring-framework"
classifier = "dist"
description = "Builds -${classifier} archive, containing all jars and docs, " +
archiveBaseName . set ( "spring-framework" )
ar chiveC lassifier. set ( "dist" )
description = "Builds -${ar chiveC lassifier} archive, containing all jars and docs, " +
"suitable for community download page."
ext . baseDir = "${b aseName}-${project.version}" ;
ext . baseDir = "${archiveB aseName}-${project.version}" ;
from ( "src/docs/dist" ) {
include "readme.txt"
@ -218,49 +224,17 @@ task distZip(type: Zip, dependsOn: [docsZip, schemaZip]) {
@@ -218,49 +224,17 @@ task distZip(type: Zip, dependsOn: [docsZip, schemaZip]) {
into "${baseDir}/schema"
}
moduleProjects . each { subproject - >
moduleProjects . each { module - >
into ( "${baseDir}/libs" ) {
from subproject . jar
if ( subproject . tasks . findByPath ( "sourcesJar" ) ) {
from subproject . sourcesJar
from module . jar
if ( module . tasks . findByPath ( "sourcesJar" ) ) {
from module . sourcesJar
}
if ( subproject . tasks . findByPath ( "javadocJar" ) ) {
from subproject . javadocJar
if ( module . tasks . findByPath ( "javadocJar" ) ) {
from module . javadocJar
}
}
}
}
distZip . mustRunAfter subprojects . test
// Create a distribution that contains all dependencies ( required and optional ) .
// Not published by default ; only for use when building from source .
task depsZip ( type: Zip , dependsOn: distZip ) { zipTask - >
group = "Distribution"
baseName = "spring-framework"
classifier = "dist-with-deps"
description = "Builds -${classifier} archive, containing everything " +
"in the -${distZip.classifier} archive plus all runtime dependencies."
from zipTree ( distZip . archivePath )
gradle . taskGraph . whenReady { taskGraph - >
if ( taskGraph . hasTask ( ":${zipTask.name}" ) ) {
def projectNames = rootProject . subprojects * . name
def artifacts = new HashSet ( )
subprojects . each { subproject - >
( subproject . configurations . runtime . resolvedConfiguration . resolvedArtifacts +
subproject . configurations . optional . resolvedConfiguration . resolvedArtifacts ) . each { artifact - >
def dependency = artifact . moduleVersion . id
if ( ! projectNames . contains ( dependency . name ) ) {
artifacts < < artifact . file
}
}
}
zipTask . from ( artifacts ) {
into "${distZip.baseDir}/deps"
}
}
}
}
distZip . mustRunAfter moduleProjects . check