Stop publishing distribution zip artifact
Prior to this commit, the Spring Framework build would publish several
zip artifacts:
* a "*-schema.zip" containing all the XSD schemas produced
* a "*-docs.zip" containing the API docs
* a "*-dist.zip" containing all of the above, plus module jars
Since the reference docs are now produced by Antora in a separate
process, the "*-docs.zip" does not contain the reference docs anymore.
But it still contains the API docs which are automatically fetched from
the artifact repository and published on the docs.spring.io website.
This commit intends to update the current arrangement and optimize the
build.
First, the "*-dist.zip" is not published anymore, since it cannot be
consumed anyway by the community: repo.spring.io does not distribute
release artifacts publicly, developers are expected to get them from
Maven Central. This arrangement is quite dated anyway and is not really
useful in current application build setups.
The generation of API docs is moved to a new "framework-api" module,
separating it from the reference docs module ("framework-docs") which
contains Java, Kotlin and Asciidoctor sources. This removes the custom
javadoc aggregation task and instead uses a dedicated Gradle plugin.
This change also adds a new `-PskipDocs` Gradle project property that
skips entirely the documentation tasks (javadoc, kdocs) as well as the
"distrbution" tasks managed in the framework-api module.
This allows developers to publish locally a SNAPSHOT of Spring Framework
without creating the entire documentation distribution. This is
particularly useful for local testing.
For example, `$ ./gradlew pTML -PskipDocs`.
Closes gh-31049
1 year ago
|
|
|
plugins {
|
|
|
|
id 'java-platform'
|
|
|
|
id 'io.freefair.aggregate-javadoc' version '8.3'
|
Stop publishing distribution zip artifact
Prior to this commit, the Spring Framework build would publish several
zip artifacts:
* a "*-schema.zip" containing all the XSD schemas produced
* a "*-docs.zip" containing the API docs
* a "*-dist.zip" containing all of the above, plus module jars
Since the reference docs are now produced by Antora in a separate
process, the "*-docs.zip" does not contain the reference docs anymore.
But it still contains the API docs which are automatically fetched from
the artifact repository and published on the docs.spring.io website.
This commit intends to update the current arrangement and optimize the
build.
First, the "*-dist.zip" is not published anymore, since it cannot be
consumed anyway by the community: repo.spring.io does not distribute
release artifacts publicly, developers are expected to get them from
Maven Central. This arrangement is quite dated anyway and is not really
useful in current application build setups.
The generation of API docs is moved to a new "framework-api" module,
separating it from the reference docs module ("framework-docs") which
contains Java, Kotlin and Asciidoctor sources. This removes the custom
javadoc aggregation task and instead uses a dedicated Gradle plugin.
This change also adds a new `-PskipDocs` Gradle project property that
skips entirely the documentation tasks (javadoc, kdocs) as well as the
"distrbution" tasks managed in the framework-api module.
This allows developers to publish locally a SNAPSHOT of Spring Framework
without creating the entire documentation distribution. This is
particularly useful for local testing.
For example, `$ ./gradlew pTML -PskipDocs`.
Closes gh-31049
1 year ago
|
|
|
}
|
|
|
|
|
|
|
|
description = "Spring Framework API Docs"
|
|
|
|
|
|
|
|
apply from: "${rootDir}/gradle/publications.gradle"
|
|
|
|
|
|
|
|
repositories {
|
|
|
|
maven {
|
|
|
|
url "https://repo.spring.io/release"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
dependencies {
|
|
|
|
moduleProjects.each { moduleProject ->
|
Stop publishing distribution zip artifact
Prior to this commit, the Spring Framework build would publish several
zip artifacts:
* a "*-schema.zip" containing all the XSD schemas produced
* a "*-docs.zip" containing the API docs
* a "*-dist.zip" containing all of the above, plus module jars
Since the reference docs are now produced by Antora in a separate
process, the "*-docs.zip" does not contain the reference docs anymore.
But it still contains the API docs which are automatically fetched from
the artifact repository and published on the docs.spring.io website.
This commit intends to update the current arrangement and optimize the
build.
First, the "*-dist.zip" is not published anymore, since it cannot be
consumed anyway by the community: repo.spring.io does not distribute
release artifacts publicly, developers are expected to get them from
Maven Central. This arrangement is quite dated anyway and is not really
useful in current application build setups.
The generation of API docs is moved to a new "framework-api" module,
separating it from the reference docs module ("framework-docs") which
contains Java, Kotlin and Asciidoctor sources. This removes the custom
javadoc aggregation task and instead uses a dedicated Gradle plugin.
This change also adds a new `-PskipDocs` Gradle project property that
skips entirely the documentation tasks (javadoc, kdocs) as well as the
"distrbution" tasks managed in the framework-api module.
This allows developers to publish locally a SNAPSHOT of Spring Framework
without creating the entire documentation distribution. This is
particularly useful for local testing.
For example, `$ ./gradlew pTML -PskipDocs`.
Closes gh-31049
1 year ago
|
|
|
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"
|
|
|
|
doFirst {
|
|
|
|
classpath += files(
|
|
|
|
// ensure the javadoc process can resolve types compiled from .aj sources
|
|
|
|
project(":spring-aspects").sourceSets.main.output
|
|
|
|
)
|
|
|
|
classpath += files(moduleProjects.collect { it.sourceSets.main.compileClasspath })
|
Stop publishing distribution zip artifact
Prior to this commit, the Spring Framework build would publish several
zip artifacts:
* a "*-schema.zip" containing all the XSD schemas produced
* a "*-docs.zip" containing the API docs
* a "*-dist.zip" containing all of the above, plus module jars
Since the reference docs are now produced by Antora in a separate
process, the "*-docs.zip" does not contain the reference docs anymore.
But it still contains the API docs which are automatically fetched from
the artifact repository and published on the docs.spring.io website.
This commit intends to update the current arrangement and optimize the
build.
First, the "*-dist.zip" is not published anymore, since it cannot be
consumed anyway by the community: repo.spring.io does not distribute
release artifacts publicly, developers are expected to get them from
Maven Central. This arrangement is quite dated anyway and is not really
useful in current application build setups.
The generation of API docs is moved to a new "framework-api" module,
separating it from the reference docs module ("framework-docs") which
contains Java, Kotlin and Asciidoctor sources. This removes the custom
javadoc aggregation task and instead uses a dedicated Gradle plugin.
This change also adds a new `-PskipDocs` Gradle project property that
skips entirely the documentation tasks (javadoc, kdocs) as well as the
"distrbution" tasks managed in the framework-api module.
This allows developers to publish locally a SNAPSHOT of Spring Framework
without creating the entire documentation distribution. This is
particularly useful for local testing.
For example, `$ ./gradlew pTML -PskipDocs`.
Closes gh-31049
1 year ago
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* 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 {
|
|
|
|
publications {
|
|
|
|
mavenJava(MavenPublication) {
|
|
|
|
artifact docsZip
|
|
|
|
artifact schemaZip
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|