Skip to content

Commit 5bddca8

Browse files
committed
Link to major.minor versions of Spring projects
This commit updates the doc build process to link to the latest doc for a given generation, rather than a specific version. This applies to both the reference guide and the aggregated Javadoc. Closes gh-42196
1 parent 545e370 commit 5bddca8

File tree

1 file changed

+27
-15
lines changed

1 file changed

+27
-15
lines changed

spring-boot-project/spring-boot-docs/build.gradle

Lines changed: 27 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -232,12 +232,18 @@ task aggregatedJavadoc(type: Javadoc) {
232232
}
233233
doFirst {
234234
def versionConstraints = dependencyVersions.versionConstraints
235+
def toMajorMinorVersion = version -> {
236+
String formatted = version.split("\\.").take(2).join('.') + '.x'
237+
return version.endsWith("-SNAPSHOT") ? formatted + "-SNAPSHOT" : formatted
238+
}
239+
def springFrameworkVersion = toMajorMinorVersion(versionConstraints["org.springframework:spring-core"])
240+
def springSecurityVersion = toMajorMinorVersion(versionConstraints["org.springframework.security:spring-security-core"])
235241
def tomcatVersion = "${versionConstraints["org.apache.tomcat:tomcat-annotations-api"]}"
236242
def tomcatDocsVersion = tomcatVersion.substring(0, tomcatVersion.lastIndexOf("."));
237243
options.links = [
238244
"https://docs.oracle.com/en/java/javase/17/docs/api/",
239-
"https://docs.spring.io/spring-framework/docs/${versionConstraints["org.springframework:spring-core"]}/javadoc-api/",
240-
"https://docs.spring.io/spring-security/site/docs/${versionConstraints["org.springframework.security:spring-security-core"]}/api/",
245+
"https://docs.spring.io/spring-framework/docs/${springFrameworkVersion}/javadoc-api/",
246+
"https://docs.spring.io/spring-security/site/docs/${springSecurityVersion}/api/",
241247
"https://jakarta.ee/specifications/platform/9/apidocs/",
242248
"https://tomcat.apache.org/tomcat-${tomcatDocsVersion}-doc/api/",
243249
] as String[]
@@ -317,42 +323,48 @@ tasks.withType(org.asciidoctor.gradle.jvm.AbstractAsciidoctorTask) {
317323
}
318324
doFirst {
319325
def versionConstraints = dependencyVersions.versionConstraints
326+
def extractMajorMinor = version -> version.split("\\.").take(2).join('.')
327+
def toMajorMinorVersion = version -> {
328+
String formatted = extractMajorMinor(version) + '.x'
329+
return version.endsWith("-SNAPSHOT") ? formatted + "-SNAPSHOT" : formatted
330+
}
331+
def toSpringDataVersion = version -> extractMajorMinor(version) + '.x'
320332
def toAntoraVersion = version -> {
321-
String formatted = version.split("\\.").take(2).join('.')
333+
String formatted = extractMajorMinor(version)
322334
return version.endsWith("-SNAPSHOT") ? formatted + "-SNAPSHOT" : formatted
323335
}
324336
attributes "hibernate-version": versionConstraints["org.hibernate.orm:hibernate-core"].split("\\.").take(2).join('.'),
325337
"jetty-version": versionConstraints["org.eclipse.jetty:jetty-server"],
326338
"jooq-version": versionConstraints["org.jooq:jooq"],
327339
"lettuce-version": versionConstraints["io.lettuce:lettuce-core"],
328340
"native-build-tools-version": nativeBuildToolsVersion,
329-
"spring-amqp-version": versionConstraints["org.springframework.amqp:spring-amqp"],
330-
"spring-batch-version": versionConstraints["org.springframework.batch:spring-batch-core"],
341+
"spring-amqp-version": toMajorMinorVersion(versionConstraints["org.springframework.amqp:spring-amqp"]),
342+
"spring-batch-version": toMajorMinorVersion(versionConstraints["org.springframework.batch:spring-batch-core"]),
331343
"spring-batch-version-antora": toAntoraVersion(versionConstraints["org.springframework.batch:spring-batch-core"]),
332344
"spring-boot-version": project.version,
333345
"spring-data-cassandra-version-antora": toAntoraVersion(versionConstraints["org.springframework.data:spring-data-cassandra"]),
334-
"spring-data-commons-version": versionConstraints["org.springframework.data:spring-data-commons"],
346+
"spring-data-commons-version": toSpringDataVersion(versionConstraints["org.springframework.data:spring-data-commons"]),
335347
"spring-data-couchbase-version-antora": toAntoraVersion(versionConstraints["org.springframework.data:spring-data-couchbase"]),
336348
"spring-data-elasticsearch-version-antora": toAntoraVersion(versionConstraints["org.springframework.data:spring-data-elasticsearch"]),
337-
"spring-data-jdbc-version": versionConstraints["org.springframework.data:spring-data-jdbc"],
349+
"spring-data-jdbc-version": toSpringDataVersion(versionConstraints["org.springframework.data:spring-data-jdbc"]),
338350
"spring-data-jdbc-version-antora": toAntoraVersion(versionConstraints["org.springframework.data:spring-data-jdbc"]),
339-
"spring-data-jpa-version": versionConstraints["org.springframework.data:spring-data-jpa"],
351+
"spring-data-jpa-version": toSpringDataVersion(versionConstraints["org.springframework.data:spring-data-jpa"]),
340352
"spring-data-jpa-version-antora": toAntoraVersion(versionConstraints["org.springframework.data:spring-data-jpa"]),
341353
"spring-data-ldap-version-antora": toAntoraVersion(versionConstraints["org.springframework.data:spring-data-ldap"]),
342-
"spring-data-mongodb-version": versionConstraints["org.springframework.data:spring-data-mongodb"],
354+
"spring-data-mongodb-version": toSpringDataVersion(versionConstraints["org.springframework.data:spring-data-mongodb"]),
343355
"spring-data-neo4j-version-antora": toAntoraVersion(versionConstraints["org.springframework.data:spring-data-neo4j"]),
344-
"spring-data-r2dbc-version": versionConstraints["org.springframework.data:spring-data-r2dbc"],
356+
"spring-data-r2dbc-version": toSpringDataVersion(versionConstraints["org.springframework.data:spring-data-r2dbc"]),
345357
"spring-data-r2dbc-version-antora": toAntoraVersion(versionConstraints["org.springframework.data:spring-data-r2dbc"]),
346-
"spring-data-rest-version": versionConstraints["org.springframework.data:spring-data-rest-core"],
347-
"spring-framework-version": versionConstraints["org.springframework:spring-core"],
358+
"spring-data-rest-version": toSpringDataVersion(versionConstraints["org.springframework.data:spring-data-rest-core"]),
359+
"spring-framework-version": toMajorMinorVersion(versionConstraints["org.springframework:spring-core"]),
348360
"spring-framework-version-antora": toAntoraVersion(versionConstraints["org.springframework:spring-core"]),
349361
"spring-graphql-version-antora": toAntoraVersion(versionConstraints["org.springframework.graphql:spring-graphql"]),
350362
"spring-integration-version-antora": toAntoraVersion(versionConstraints["org.springframework.integration:spring-integration-core"]),
351-
"spring-kafka-version": versionConstraints["org.springframework.kafka:spring-kafka"],
352-
"spring-pulsar-version": versionConstraints["org.springframework.pulsar:spring-pulsar"],
363+
"spring-kafka-version": toMajorMinorVersion(versionConstraints["org.springframework.kafka:spring-kafka"]),
364+
"spring-pulsar-version": toMajorMinorVersion(versionConstraints["org.springframework.pulsar:spring-pulsar"]),
353365
"spring-security-version-antora": toAntoraVersion(versionConstraints["org.springframework.security:spring-security-core"]),
354366
"spring-authorization-server-version-antora": toAntoraVersion(versionConstraints["org.springframework.security:spring-security-oauth2-authorization-server"]),
355-
"spring-webservices-version": versionConstraints["org.springframework.ws:spring-ws-core"],
367+
"spring-webservices-version": toMajorMinorVersion(versionConstraints["org.springframework.ws:spring-ws-core"]),
356368
"tomcat-version": tomcatVersion.split("\\.").take(2).join('.'),
357369
"remote-spring-application-output": runRemoteSpringApplicationExample.outputs.files.singleFile,
358370
"spring-application-output": runSpringApplicationExample.outputs.files.singleFile,

0 commit comments

Comments
 (0)