diff --git a/buildSrc/src/main/java/org/springframework/boot/build/antora/AntoraAsciidocAttributes.java b/buildSrc/src/main/java/org/springframework/boot/build/antora/AntoraAsciidocAttributes.java index 3d5bec724ae..7526f89a396 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/antora/AntoraAsciidocAttributes.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/antora/AntoraAsciidocAttributes.java @@ -78,6 +78,7 @@ public class AntoraAsciidocAttributes { addGitHubAttributes(attributes); addVersionAttributes(attributes); addUrlArtifactRepository(attributes); + addUrlJava(attributes); addUrlLibraryLinkAttributes(attributes); addPropertyAttributes(attributes); return attributes; @@ -109,8 +110,12 @@ public class AntoraAsciidocAttributes { }); attributes.put("version-native-build-tools", (String) this.projectProperties.get("nativeBuildToolsVersion")); attributes.put("version-graal", (String) this.projectProperties.get("graalVersion")); + addDependencyVersion(attributes, "jackson-annotations", "com.fasterxml.jackson.core:jackson-annotations"); + addDependencyVersion(attributes, "jackson-core", "com.fasterxml.jackson.core:jackson-core"); + addDependencyVersion(attributes, "jackson-databind", "com.fasterxml.jackson.core:jackson-databind"); addSpringDataDependencyVersion(attributes, "spring-data-commons"); addSpringDataDependencyVersion(attributes, "spring-data-couchbase"); + addSpringDataDependencyVersion(attributes, "spring-data-cassandra"); addSpringDataDependencyVersion(attributes, "spring-data-elasticsearch"); addSpringDataDependencyVersion(attributes, "spring-data-jdbc"); addSpringDataDependencyVersion(attributes, "spring-data-jpa"); @@ -125,8 +130,12 @@ public class AntoraAsciidocAttributes { } private void addSpringDataDependencyVersion(Map attributes, String name, String artifactId) { - String version = this.dependencyVersions.get("org.springframework.data:" + artifactId); - Assert.notNull(version, () -> "No version found for Spring Data artifact " + artifactId); + addDependencyVersion(attributes, name, "org.springframework.data:" + artifactId); + } + + private void addDependencyVersion(Map attributes, String name, String groupAndArtifactId) { + String version = this.dependencyVersions.get(groupAndArtifactId); + Assert.notNull(version, () -> "No version found for " + groupAndArtifactId); attributes.put("version-" + name, version); } @@ -134,6 +143,10 @@ public class AntoraAsciidocAttributes { attributes.put("url-artifact-repository", this.artifactRelease.getDownloadRepo()); } + private void addUrlJava(Map attributes) { + attributes.put("url-javase-javadoc", "https://docs.oracle.com/en/java/javase/17/docs/api/"); + } + private void addUrlLibraryLinkAttributes(Map attributes) { this.libraries.forEach((library) -> { String prefix = "url-" + library.getLinkRootName() + "-"; diff --git a/buildSrc/src/main/resources/org/springframework/boot/build/antora/antora-asciidoc-attributes.properties b/buildSrc/src/main/resources/org/springframework/boot/build/antora/antora-asciidoc-attributes.properties index 023a3473c5d..20f9edb30b3 100644 --- a/buildSrc/src/main/resources/org/springframework/boot/build/antora/antora-asciidoc-attributes.properties +++ b/buildSrc/src/main/resources/org/springframework/boot/build/antora/antora-asciidoc-attributes.properties @@ -33,10 +33,13 @@ url-paketo-docs=https://paketo.io/docs url-paketo-docs-java-buildpack={url-paketo-docs}/buildpacks/language-family-buildpacks/java url-spring-boot-for-apache-geode-docs=https://docs.spring.io/spring-boot-data-geode-build/2.0.x/reference/html5 url-spring-boot-for-apache-geode-site=https://github.com/spring-projects/spring-boot-data-geode +url-spring-data-cassandra-javadoc=https://docs.spring.io/spring-data/cassandra/docs/{version-spring-data-cassandra}/api url-spring-data-cassandra-site=https://spring.io/projects/spring-data-cassandra url-spring-data-commons-javadoc=https://docs.spring.io/spring-data/commons/docs/{version-spring-data-commons}/api url-spring-data-couchbase-docs=https://docs.spring.io/spring-data/couchbase/reference/{version-spring-data-couchbase} url-spring-data-couchbase-site=https://spring.io/projects/spring-data-couchbase +url-spring-data-couchbase-javadoc=https://docs.spring.io/spring-data/couchbase/docs/{version-spring-data-couchbase}/api +url-spring-data-elasticsearch-javadoc=https://docs.spring.io/spring-data/elasticsearch/docs/{version-spring-data-elasticsearch}/api url-spring-data-elasticsearch-docs=https://docs.spring.io/spring-data/elasticsearch/reference/{version-spring-data-elasticsearch} url-spring-data-elasticsearch-site=https://spring.io/projects/spring-data-elasticsearch url-spring-data-envers-site=https://spring.io/projects/spring-data-envers @@ -50,6 +53,7 @@ url-spring-data-ldap-site=https://spring.io/projects/spring-data-ldap url-spring-data-mongodb-javadoc=https://docs.spring.io/spring-data/mongodb/docs/{version-spring-data-mongodb}/api url-spring-data-mongodb-site=https://spring.io/projects/spring-data-mongodb url-spring-data-mongodb-docs=https://docs.spring.io/spring-data/mongodb/reference/{version-spring-data-mongodb} +url-spring-data-neo4j-javadoc=https://docs.spring.io/spring-data/neo4j/docs/{version-spring-data-neo4j}/api url-spring-data-neo4j-docs=https://docs.spring.io/spring-data/neo4j/reference/{version-spring-data-neo4j} url-spring-data-neo4j-site=https://spring.io/projects/spring-data-neo4j url-spring-data-r2dbc-javadoc=https://docs.spring.io/spring-data/r2dbc/docs/{version-spring-data-r2dbc}/api @@ -57,6 +61,9 @@ url-spring-data-r2dbc-docs=https://docs.spring.io/spring-data/relational/referen url-spring-data-redis-site=https://spring.io/projects/spring-data-redis url-spring-data-rest-javadoc=https://docs.spring.io/spring-data/rest/docs/{version-spring-data-rest}/api url-spring-data-site=https://spring.io/projects/spring-data +url-jackson-annotations=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-annotations/{version-jackson-annotations} +url-jackson-core=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-core/{version-jackson-core} +url-jackson-databind=https://javadoc.io/doc/com.fasterxml.jackson.core/jackson-databind/{version-jackson-databind} # === API References === diff --git a/buildSrc/src/test/java/org/springframework/boot/build/antora/AntoraAsciidocAttributesTests.java b/buildSrc/src/test/java/org/springframework/boot/build/antora/AntoraAsciidocAttributesTests.java index c197e3cefd4..c8c2b8d6f37 100644 --- a/buildSrc/src/test/java/org/springframework/boot/build/antora/AntoraAsciidocAttributesTests.java +++ b/buildSrc/src/test/java/org/springframework/boot/build/antora/AntoraAsciidocAttributesTests.java @@ -154,6 +154,7 @@ class AntoraAsciidocAttributesTests { private Map mockDependencyVersions() { Map versions = new LinkedHashMap<>(); addMockSpringDataVersion(versions, "spring-data-commons"); + addMockSpringDataVersion(versions, "spring-data-cassandra"); addMockSpringDataVersion(versions, "spring-data-couchbase"); addMockSpringDataVersion(versions, "spring-data-elasticsearch"); addMockSpringDataVersion(versions, "spring-data-jdbc"); @@ -162,6 +163,9 @@ class AntoraAsciidocAttributesTests { addMockSpringDataVersion(versions, "spring-data-neo4j"); addMockSpringDataVersion(versions, "spring-data-r2dbc"); addMockSpringDataVersion(versions, "spring-data-rest-core"); + addMockJacksonVersion(versions, "jackson-annotations"); + addMockJacksonVersion(versions, "jackson-core"); + addMockJacksonVersion(versions, "jackson-databind"); return versions; } @@ -169,4 +173,8 @@ class AntoraAsciidocAttributesTests { versions.put("org.springframework.data:" + artifactId, "1.2.3"); } + private void addMockJacksonVersion(Map versions, String artifactId) { + versions.put("com.fasterxml.jackson.core:" + artifactId, "2.3.4"); + } + } diff --git a/spring-boot-project/spring-boot-dependencies/build.gradle b/spring-boot-project/spring-boot-dependencies/build.gradle index 5cad232c7d3..f57884aada6 100644 --- a/spring-boot-project/spring-boot-dependencies/build.gradle +++ b/spring-boot-project/spring-boot-dependencies/build.gradle @@ -402,6 +402,7 @@ bom { } links { site("https://documentation.red-gate.com/flyway") + javadoc("https://javadoc.io/doc/org.flywaydb/flyway-core/{version}") } } library("FreeMarker", "2.3.33") { @@ -458,6 +459,7 @@ bom { } links { site("https://www.graphql-java.com/") + javadoc("https://javadoc.io/doc/com.graphql-java/graphql-java/{version}") releaseNotes("https://github.com/graphql-java/graphql-java/releases/tag/v{version}") } } @@ -479,6 +481,7 @@ bom { } links { site("https://github.com/google/gson") + javadoc("https://javadoc.io/doc/com.google.code.gson/gson/{version}") releaseNotes("https://github.com/google/gson/releases/tag/gson-parent-{version}") } } @@ -511,6 +514,7 @@ bom { } links { site("https://hazelcast.com") + javadoc("https://javadoc.io/doc/com.hazelcast/hazelcast/{version}") releaseNotes("https://github.com/hazelcast/hazelcast/releases/tag/v{version}") } } @@ -653,6 +657,8 @@ bom { } links { site("https://github.com/jakartaee/jaf-api") + javadoc { version -> "https://jakarta.ee/specifications/activation/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } releaseNotes("https://github.com/jakartaee/jaf-api/releases/tag/{version}") } } @@ -662,6 +668,10 @@ bom { "jakarta.annotation-api" ] } + links { + javadoc { version -> "https://jakarta.ee/specifications/annotations/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } + } } library("Jakarta Inject", "2.0.1") { group("jakarta.inject") { @@ -669,6 +679,10 @@ bom { "jakarta.inject-api" ] } + links { + javadoc { version -> "https://jakarta.ee/specifications/dependency-injection/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } + } } library("Jakarta JMS", "3.1.0") { group("jakarta.jms") { @@ -676,6 +690,12 @@ bom { "jakarta.jms-api" ] } + links { + site { version -> "https://jakarta.ee/specifications/messaging/%s.%s" + .formatted(version.major(), version.minor()) } + javadoc { version -> "https://jakarta.ee/specifications/messaging/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } + } } library("Jakarta Json", "2.1.3") { group("jakarta.json") { @@ -683,6 +703,10 @@ bom { "jakarta.json-api" ] } + links { + javadoc { version -> "https://jakarta.ee/specifications/jsonp/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } + } } library("Jakarta Json Bind", "3.0.1") { group("jakarta.json.bind") { @@ -690,6 +714,10 @@ bom { "jakarta.json.bind-api" ] } + links { + javadoc { version -> "https://jakarta.ee/specifications/jsonb/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } + } } library("Jakarta Mail", "2.1.3") { group("jakarta.mail") { @@ -698,7 +726,10 @@ bom { ] } links { - site("https://github.com/jakartaee/mail-api") + site { version -> "https://jakarta.ee/specifications/mail/%s.%s" + .formatted(version.major(), version.minor()) } + javadoc { version -> "https://jakarta.ee/specifications/mail/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } releaseNotes("https://github.com/jakartaee/mail-api/releases/tag/{version}") } } @@ -715,6 +746,12 @@ bom { "jakarta.persistence-api" ] } + links { + site { version -> "https://jakarta.ee/specifications/persistence/%s.%s" + .formatted(version.major(), version.minor()) } + javadoc { version -> "https://jakarta.ee/specifications/persistence/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } + } } library("Jakarta Servlet", "6.0.0") { group("jakarta.servlet") { @@ -722,6 +759,12 @@ bom { "jakarta.servlet-api" ] } + links { + site { version -> "https://jakarta.ee/specifications/servlet/%s.%s" + .formatted(version.major(), version.minor()) } + javadoc { version -> "https://jakarta.ee/specifications/servlet/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } + } } library("Jakarta Servlet JSP JSTL", "3.0.0") { group("jakarta.servlet.jsp.jstl") { @@ -736,6 +779,10 @@ bom { "jakarta.transaction-api" ] } + links { + javadoc { version -> "https://jakarta.ee/specifications/transactions/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } + } } library("Jakarta Validation", "3.0.2") { group("jakarta.validation") { @@ -743,6 +790,10 @@ bom { "jakarta.validation-api" ] } + links { + javadoc { version -> "https://jakarta.ee/specifications/bean-validation/%s.%s/apidocs" + .formatted(version.major(), version.minor()) } + } } library("Jakarta WebSocket", "2.1.1") { group("jakarta.websocket") { @@ -1262,6 +1313,7 @@ bom { } links { site("https://micrometer.io") + javadoc("https://javadoc.io/doc/io.micrometer/micrometer-core/{version}") docs { version -> "https://docs.micrometer.io/micrometer/reference/%s.%s" .formatted(version.major(), version.minor()) } releaseNotes("https://github.com/micrometer-metrics/micrometer/releases/tag/v{version}") @@ -1276,6 +1328,7 @@ bom { } links { site("https://micrometer.io") + javadoc("https://javadoc.io/doc/io.micrometer/micrometer-tracing/{version}") docs { version -> "https://docs.micrometer.io/tracing/reference/%s.%s" .formatted(version.major(), version.minor()) } releaseNotes("https://github.com/micrometer-metrics/tracing/releases/tag/v{version}") @@ -1401,6 +1454,7 @@ bom { } links { site("https://github.com/open-telemetry/opentelemetry-java") + javadoc("https://javadoc.io/doc/io.opentelemetry/opentelemetry-sdk-common/{version}") releaseNotes("https://github.com/open-telemetry/opentelemetry-java/releases/tag/v{version}") } } @@ -1634,6 +1688,10 @@ bom { "r2dbc-spi" ] } + links { + site("https://r2dbc.io") + javadoc("https://r2dbc.io/spec/{version}/api") + } } library("Rabbit AMQP Client", "5.21.0") { group("com.rabbitmq") { @@ -1643,6 +1701,7 @@ bom { } links { site("https://github.com/rabbitmq/rabbitmq-java-client") + javadoc("https://rabbitmq.github.io/rabbitmq-java-client/api/current/") releaseNotes("https://github.com/rabbitmq/rabbitmq-java-client/releases/tag/v{version}") } } @@ -2132,6 +2191,7 @@ bom { } links { site("https://java.testcontainers.org") + javadoc("https://javadoc.io/doc/org.testcontainers/testcontainers/{version}") releaseNotes("https://github.com/testcontainers/testcontainers-java/releases/tag/{version}") } }