From 7483278e7d3e9b946f950b4cfb27204efe3bc24a Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 24 Jun 2026 08:58:17 +0100 Subject: [PATCH 1/5] Only apply grpc defaults when grpc plugin is configured Previously, Spring Boot's Gradle plugin reacted to the Protobuf plugin by configuring Protobuf's grpc plugin. This worked well for projects using gRPC but went too far for those using Protobuf without gRPC. This commit dials the support back a little bit. Now, our recommended gRPC defaults are only applied when Protobuf is configured with the grpc plugin. Closes gh-50822 --- .../antora/modules/gradle-plugin/pages/reacting.adoc | 5 ++++- .../boot/gradle/plugin/ProtobufPluginAction.java | 10 ++++++---- .../plugin/ProtobufPluginActionIntegrationTests.gradle | 6 ++++++ 3 files changed, 16 insertions(+), 5 deletions(-) diff --git a/build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/reacting.adoc b/build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/reacting.adoc index 5ccd7f80e3f2..33558dd5a706 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/reacting.adoc +++ b/build-plugin/spring-boot-gradle-plugin/src/docs/antora/modules/gradle-plugin/pages/reacting.adoc @@ -113,5 +113,8 @@ When the {url-cyclonedx-docs-gradle-plugin}[CycloneDX plugin] is applied to a pr When the {url-protobuf-docs-gradle-plugin}[Protobuf plugin] is applied to a project, the Spring Boot plugin: . Configures `protoc` to use the artifact `com.google.protobuf:protoc`, aligning its version with that of Protobuf dependencies on the runtime classpath. -. Configures the `grpc` plugin to use the artifact `io.grpc:protoc-gen-grpc-java`, aligning its version with that of gRPC dependencies on the runtime classpath. + +Additionally, when the Protobuf `grpc` plugin is configured, the Spring Boot plugin: + +. Configures it to use the artifact `io.grpc:protoc-gen-grpc-java`, aligning its version with that of gRPC dependencies on the runtime classpath. . Configures the `grpc` plugin of all generate proto tasks with the option `@generated=omit`. diff --git a/build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ProtobufPluginAction.java b/build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ProtobufPluginAction.java index 897c4eadacb1..338bd21b451d 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ProtobufPluginAction.java +++ b/build-plugin/spring-boot-gradle-plugin/src/main/java/org/springframework/boot/gradle/plugin/ProtobufPluginAction.java @@ -62,8 +62,7 @@ public Class> getPluginClass() { public void execute(Project project) { ProtobufExtension protobuf = project.getExtensions().getByType(ProtobufExtension.class); protobuf.protoc(this::configureProtoc); - protobuf.plugins(this::configurePlugins); - protobuf.generateProtoTasks(this::configureGenerateProtoTasks); + protobuf.plugins((plugins) -> configurePlugins(plugins, protobuf)); project.getConfigurations() .named(this::isProtobufToolsLocator) .configureEach((configuration) -> configureProtobufToolsLocator(project, configuration)); @@ -73,8 +72,11 @@ private void configureProtoc(ExecutableLocator protoc) { protoc.setArtifact(protocDependency.asDependencySpec()); } - private ExecutableLocator configurePlugins(NamedDomainObjectContainer plugins) { - return plugins.create("grpc", (grpc) -> grpc.setArtifact(grpcDependency.asDependencySpec())); + private void configurePlugins(NamedDomainObjectContainer plugins, ProtobufExtension protobuf) { + plugins.matching((plugin) -> "grpc".equals(plugin.getName())).configureEach((grpc) -> { + grpc.setArtifact(grpcDependency.asDependencySpec()); + protobuf.generateProtoTasks(this::configureGenerateProtoTasks); + }); } private void configureGenerateProtoTasks(GenerateProtoTaskCollection tasks) { diff --git a/build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ProtobufPluginActionIntegrationTests.gradle b/build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ProtobufPluginActionIntegrationTests.gradle index 9008568a1f57..4eb508578b99 100644 --- a/build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ProtobufPluginActionIntegrationTests.gradle +++ b/build-plugin/spring-boot-gradle-plugin/src/test/resources/org/springframework/boot/gradle/plugin/ProtobufPluginActionIntegrationTests.gradle @@ -33,6 +33,12 @@ dependencies { implementation("io.grpc:grpc-util:1.79.0") } +protobuf { + plugins { + grpc {} + } +} + tasks.register("protocArtifact") { doFirst { protobuf { From a8540589933e584ddc2483bec68a4ce9a7820f79 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 24 Jun 2026 10:42:35 +0100 Subject: [PATCH 2/5] Upgrade to jfrog/setup-jfrog-cli 5.1.0 Closes gh-50832 --- .github/actions/publish-gradle-plugin/action.yml | 2 +- .github/actions/sync-to-maven-central/action.yml | 2 +- .github/workflows/release.yml | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/actions/publish-gradle-plugin/action.yml b/.github/actions/publish-gradle-plugin/action.yml index 8c136ba732c2..e01647c9efde 100644 --- a/.github/actions/publish-gradle-plugin/action.yml +++ b/.github/actions/publish-gradle-plugin/action.yml @@ -21,7 +21,7 @@ runs: using: composite steps: - name: Set Up JFrog CLI - uses: jfrog/setup-jfrog-cli@1641575d87647fb969c0545f0b6a76873e328b7c # v5.0.0 + uses: jfrog/setup-jfrog-cli@deda456d982fc5e9a7a020b63eb0d2968aedd33e # v5.1.0 env: JF_ENV_SPRING: ${{ inputs.jfrog-cli-config-token }} - name: Download Artifacts diff --git a/.github/actions/sync-to-maven-central/action.yml b/.github/actions/sync-to-maven-central/action.yml index 863c70b21db6..02152b406471 100644 --- a/.github/actions/sync-to-maven-central/action.yml +++ b/.github/actions/sync-to-maven-central/action.yml @@ -17,7 +17,7 @@ runs: using: composite steps: - name: Set Up JFrog CLI - uses: jfrog/setup-jfrog-cli@1641575d87647fb969c0545f0b6a76873e328b7c # v5.0.0 + uses: jfrog/setup-jfrog-cli@deda456d982fc5e9a7a020b63eb0d2968aedd33e # v5.1.0 env: JF_ENV_SPRING: ${{ inputs.jfrog-cli-config-token }} - name: Download Release Artifacts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9bfbc7de10fc..0e6402018793 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -87,7 +87,7 @@ jobs: runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }} steps: - name: Set up JFrog CLI - uses: jfrog/setup-jfrog-cli@1641575d87647fb969c0545f0b6a76873e328b7c # v5.0.0 + uses: jfrog/setup-jfrog-cli@deda456d982fc5e9a7a020b63eb0d2968aedd33e # v5.1.0 env: JF_ENV_SPRING: ${{ vars.COMMERCIAL && secrets.COMMERCIAL_JF_ARTIFACTORY_SPRING || secrets.JF_ARTIFACTORY_SPRING }} - name: Promote open source build From 9b281d52e510f8638c4288ef7ae3da148bb4a3d5 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 24 Jun 2026 11:27:50 +0100 Subject: [PATCH 3/5] Upgrade to actions/checkout 7.0.0 Closes gh-50832 --- .github/actions/update-homebrew-tap/action.yml | 2 +- .github/workflows/build-and-deploy-snapshot.yml | 2 +- .github/workflows/build-pull-request.yml | 2 +- .github/workflows/ci.yml | 2 +- .github/workflows/release.yml | 12 ++++++------ .github/workflows/run-system-tests.yml | 2 +- .github/workflows/trigger-docs-build.yml | 2 +- .github/workflows/verify.yml | 4 ++-- 8 files changed, 14 insertions(+), 14 deletions(-) diff --git a/.github/actions/update-homebrew-tap/action.yml b/.github/actions/update-homebrew-tap/action.yml index d8c4b5886561..ad2a6dddc04c 100644 --- a/.github/actions/update-homebrew-tap/action.yml +++ b/.github/actions/update-homebrew-tap/action.yml @@ -11,7 +11,7 @@ runs: using: composite steps: - name: Check Out Homebrew Tap Repo - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: updated-homebrew-tap-repo repository: spring-io/homebrew-tap diff --git a/.github/workflows/build-and-deploy-snapshot.yml b/.github/workflows/build-and-deploy-snapshot.yml index 34580d6aa84c..2aedea919ccf 100644 --- a/.github/workflows/build-and-deploy-snapshot.yml +++ b/.github/workflows/build-and-deploy-snapshot.yml @@ -15,7 +15,7 @@ jobs: runs-on: ${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} steps: - name: Check Out Code - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Build and Publish id: build-and-publish uses: ./.github/actions/build diff --git a/.github/workflows/build-pull-request.yml b/.github/workflows/build-pull-request.yml index 8420a1a829b4..943884c4e852 100644 --- a/.github/workflows/build-pull-request.yml +++ b/.github/workflows/build-pull-request.yml @@ -9,7 +9,7 @@ jobs: runs-on: ${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} steps: - name: Check Out Code - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Build id: build uses: ./.github/actions/build diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3d6343da0653..ea9d43b9aa83 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -40,7 +40,7 @@ jobs: git config --global core.longPaths true Stop-Service -name Docker - name: Check Out Code - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Build id: build uses: ./.github/actions/build diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 0e6402018793..8ac6f879810c 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -14,7 +14,7 @@ jobs: runs-on: ${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }} steps: - name: Check Out Code - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Build and Publish id: build-and-publish uses: ./.github/actions/build @@ -71,7 +71,7 @@ jobs: runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }} steps: - name: Check Out Code - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Sync to Maven Central uses: ./.github/actions/sync-to-maven-central with: @@ -105,7 +105,7 @@ jobs: runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }} steps: - name: Check Out Code - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Publish uses: ./.github/actions/publish-gradle-plugin with: @@ -122,7 +122,7 @@ jobs: runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }} steps: - name: Check Out Code - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Publish to SDKMAN! uses: ./.github/actions/publish-to-sdkman with: @@ -138,7 +138,7 @@ jobs: runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }} steps: - name: Check Out Code - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Update Homebrew Tap uses: ./.github/actions/update-homebrew-tap with: @@ -169,7 +169,7 @@ jobs: runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }} steps: - name: Check Out Code - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Create GitHub Release uses: ./.github/actions/create-github-release with: diff --git a/.github/workflows/run-system-tests.yml b/.github/workflows/run-system-tests.yml index a29bcf81ac35..a9889a26ecdc 100644 --- a/.github/workflows/run-system-tests.yml +++ b/.github/workflows/run-system-tests.yml @@ -24,7 +24,7 @@ jobs: echo '{"storage-driver":"overlay2"}' | sudo tee /etc/docker/daemon.json sudo systemctl restart docker - name: Check Out Code - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 - name: Prepare Gradle Build uses: ./.github/actions/prepare-gradle-build with: diff --git a/.github/workflows/trigger-docs-build.yml b/.github/workflows/trigger-docs-build.yml index f54848615e94..26ef2a308c2d 100644 --- a/.github/workflows/trigger-docs-build.yml +++ b/.github/workflows/trigger-docs-build.yml @@ -26,7 +26,7 @@ jobs: actions: write steps: - name: Check Out - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: ref: docs-build - name: Trigger Workflow diff --git a/.github/workflows/verify.yml b/.github/workflows/verify.yml index a31b4a93e970..1c28390bde19 100644 --- a/.github/workflows/verify.yml +++ b/.github/workflows/verify.yml @@ -38,13 +38,13 @@ jobs: runs-on: ${{ vars.UBUNTU_SMALL || 'ubuntu-latest' }} steps: - name: Check Out Release Verification Tests - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: ref: 'v0.0.15' repository: spring-projects/spring-boot-release-verification token: ${{ secrets.token }} - name: Check Out Send Notification Action - uses: actions/checkout@v6 + uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7.0.0 with: path: send-notification sparse-checkout: .github/actions/send-notification From dbb08aa7f2f9cf0cb1109c422689bf13bfbbfd95 Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Wed, 24 Jun 2026 11:38:43 +0100 Subject: [PATCH 4/5] Upgrade Antora dependencies Closes gh-50838 --- antora/package-lock.json | 317 +++++++++++++++++++++++---------------- antora/package.json | 4 +- 2 files changed, 193 insertions(+), 128 deletions(-) diff --git a/antora/package-lock.json b/antora/package-lock.json index 9d3cad02b9bf..8e7d49e5f20c 100644 --- a/antora/package-lock.json +++ b/antora/package-lock.json @@ -6,8 +6,8 @@ "": { "dependencies": { "@antora/atlas-extension": "1.0.0-alpha.5", - "@antora/cli": "3.2.0-alpha.12", - "@antora/site-generator": "3.2.0-alpha.12", + "@antora/cli": "3.2.0-rc.2", + "@antora/site-generator": "3.2.0-rc.2", "@asciidoctor/tabs": "1.0.0-beta.6", "@springio/antora-extensions": "1.14.12", "@springio/antora-xref-extension": "1.0.0-alpha.5", @@ -16,17 +16,17 @@ } }, "node_modules/@antora/asciidoc-loader": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.2.0-alpha.12.tgz", - "integrity": "sha512-GVkVfbHGV+01uk2LCch75fbNdGWkXW8SPeydIEwpy1TZuM5bz6x8f+Ks9qO3Feb6DBgSWpAqj7TLmGtZNaIwZg==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/asciidoc-loader/-/asciidoc-loader-3.2.0-rc.2.tgz", + "integrity": "sha512-mBzUCDnpomxZZ+ZbH2ryZxC3BmEX5p2FzvQRY0uo+YQJVpDAoOCUb2HDhwYJVbgOM/ceaFWgF2dGPjMXlSslqQ==", "license": "MPL-2.0", "dependencies": { - "@antora/logger": "3.2.0-alpha.12", + "@antora/logger": "3.2.0-rc.2", "@antora/user-require-helper": "~3.0", "@asciidoctor/core": "~2.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/atlas-extension": { @@ -45,38 +45,38 @@ } }, "node_modules/@antora/cli": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.2.0-alpha.12.tgz", - "integrity": "sha512-UaRcJBLpEas8kMVCJcZit41+/EMTS0HBHIYripf98HzyB3ljGYp8M6kMMvrO/YdHohMgF65aSjz6sSSrHYDpwg==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/cli/-/cli-3.2.0-rc.2.tgz", + "integrity": "sha512-4yi34VFPLK0RgTgL3kpFM4DnfhsTttpBZMKKBnJ8iKWOnf8iZnrsXLPsiaXCazNiPQnLMhf/sNl+prHJAItPuA==", "license": "MPL-2.0", "dependencies": { - "@antora/logger": "3.2.0-alpha.12", - "@antora/playbook-builder": "3.2.0-alpha.12", + "@antora/logger": "3.2.0-rc.2", + "@antora/playbook-builder": "3.2.0-rc.2", "@antora/user-require-helper": "~3.0", - "commander": "~13.1" + "commander": "~14.0" }, "bin": { "antora": "bin/antora" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/content-aggregator": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.2.0-alpha.12.tgz", - "integrity": "sha512-4JSK6u7ihbr5b4Jp3XFWYAUsn593OZvWFayrqmupcnLYcyooGjTDUqnO2UHDH9GLelZxLhlOaxTGBrovXF+kNQ==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/content-aggregator/-/content-aggregator-3.2.0-rc.2.tgz", + "integrity": "sha512-cBJquPs+opKd+fxQWwpy4xZWyNJIReE5xPqbE6YVI2iqM6MyVDLR3A5mlsRex1yLzfKOhSTIuTmQlzSaiy+9RA==", "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", - "@antora/logger": "3.2.0-alpha.12", + "@antora/logger": "3.2.0-rc.2", "@antora/user-require-helper": "~3.0", "braces": "~3.0", "cache-directory": "~2.0", "fast-glob": "~3.3", "hpagent": "~1.2", - "isomorphic-git": "~1.37", - "js-yaml": "~4.1", + "isomorphic-git": "~1.38", + "js-yaml": "~4.2", "multi-progress": "~4.0", "picomatch": "~4.0", "progress": "~2.0", @@ -85,34 +85,56 @@ "vinyl": "~3.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" + } + }, + "node_modules/@antora/content-aggregator/node_modules/js-yaml": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/@antora/content-classifier": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.2.0-alpha.12.tgz", - "integrity": "sha512-CTGRxjKkd4wZKVXquz+B5ker3YeFakGUeNG4XLULxNis7WVi99b/SZoh00gMjHeftXqschx8JugwXNAiO7yz2w==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/content-classifier/-/content-classifier-3.2.0-rc.2.tgz", + "integrity": "sha512-692Qr1mD1V7oQ7ArYj8idNjhSgQNIpola1WchahY/jyGZtYk3bX+6W0o0Vr35+hcHNEhMRfIflDSH54TsuD7hQ==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.2.0-alpha.12", - "@antora/logger": "3.2.0-alpha.12", + "@antora/asciidoc-loader": "3.2.0-rc.2", + "@antora/logger": "3.2.0-rc.2", "mime-types": "~3.0", "vinyl": "~3.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/document-converter": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.2.0-alpha.12.tgz", - "integrity": "sha512-fTAw3ohkM8Cj/kocX7oJj0njivtj2T/PJs4nv6nWnb87/Dceh+B7O9hS+qz5jwCwByx6HulE6bG9Uc+BgZFuww==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/document-converter/-/document-converter-3.2.0-rc.2.tgz", + "integrity": "sha512-W0sfx2ldTy7pGYQqfi2HrGrzuEhkUIuS0scjKyxO/JuNPWdreNdp7hb6fBukNpScqHzRLhKD3wutsksZAFg6dw==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.2.0-alpha.12" + "@antora/asciidoc-loader": "3.2.0-rc.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/expand-path-helper": { @@ -125,9 +147,9 @@ } }, "node_modules/@antora/file-publisher": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.2.0-alpha.12.tgz", - "integrity": "sha512-l74Ge+VkbflBRNkflJRtPcmQP0VchbhihUnmA9oj7y5bz+arLvFNFKL1zo0qllJ121VQE34fINheH0D68l9ilQ==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/file-publisher/-/file-publisher-3.2.0-rc.2.tgz", + "integrity": "sha512-xGqIQIOTpvz7rEsbiA59NsIBnAwtl+WRSepduRTy6Gv8lim0lrJT/rhnxcAEPU/1as++FWdtMMLolkdI0fU4bg==", "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", @@ -136,129 +158,151 @@ "yazl": "~3.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/logger": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.2.0-alpha.12.tgz", - "integrity": "sha512-feyaa9w79rKuQQ9A1HpLYHNrAVgo8Oc3J/Ptu6M9XCm/T7utNA79z8DyQWL4yQADrI64f52sZv9PpSAF7EVz8A==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/logger/-/logger-3.2.0-rc.2.tgz", + "integrity": "sha512-qNCOxx1WbleUaFzeyZ3kbRL2Hf4hN6CbvvRY7w45+iwH/ErejAR5iDtH2sCWbRJGYUt2hUbJ6FmpFFkXProaeA==", "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", - "pino": "10.1.0" + "pino": "~10.3" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/navigation-builder": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.2.0-alpha.12.tgz", - "integrity": "sha512-b/+UbU/u2EasQQTwznE4Yv5+eoNuTKpYn3YBlFDVt68WhXuIee+Gevzb38EnWBCn+XrPvWRV99ZE/ccCJBE5ng==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/navigation-builder/-/navigation-builder-3.2.0-rc.2.tgz", + "integrity": "sha512-2kaZfzdx+2g3yEC+qgMpg1s6Ms6GOrzgWd47eH7/HAJ0+zFMhDnv0vhfIaDcOBtpgwdZkiJFpPN1dkGFWqtBuQ==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.2.0-alpha.12" + "@antora/asciidoc-loader": "3.2.0-rc.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/page-composer": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.2.0-alpha.12.tgz", - "integrity": "sha512-oGVhhPVo9FCwhfrEiGdzUjnA7cf1Yl4dyJd82fk+JakyhaifLxGgKmJazWn8CXs1OJUd7ImjkpX4vVAryTnlZw==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/page-composer/-/page-composer-3.2.0-rc.2.tgz", + "integrity": "sha512-J7l5Le+JZHL9giv7k3JScHE4afghA8cnX3lEGglPF8YWapzpfyJXrEBP4ukCjTgDvnpUcnxW1pYImM3yCTEC1g==", "license": "MPL-2.0", "dependencies": { - "@antora/logger": "3.2.0-alpha.12", + "@antora/logger": "3.2.0-rc.2", "handlebars": "~4.7" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/playbook-builder": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.2.0-alpha.12.tgz", - "integrity": "sha512-mOLSX7Xr297Svt3UCka0ebPN9eKq2/2qZVwgflQXZruEMY6hl6sqey8tGYZhcINKYGcGEej4EXGj0R0u1xt0oA==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/playbook-builder/-/playbook-builder-3.2.0-rc.2.tgz", + "integrity": "sha512-Fk/Ko/HYGGfDfIMZydyHidc66ASPyb+Wi0pzI4hTsK4PP8cP4NR2Rat9njAIUoMTuwsBogBGKH9uJ9l5bj/G4Q==", "license": "MPL-2.0", "dependencies": { "@iarna/toml": "~2.2", "convict": "~6.2", - "js-yaml": "~4.1", + "js-yaml": "~4.2", "json5": "~2.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" + } + }, + "node_modules/@antora/playbook-builder/node_modules/js-yaml": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/@antora/redirect-producer": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.2.0-alpha.12.tgz", - "integrity": "sha512-K58XBU3NKsGMPeLRpk/J7PWR/8TMXjX/sgnUK4Yl/NjNh2uksKfsW/DLUV8ErXYaxT8l+1R8nAgBGRSpuBIUOQ==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/redirect-producer/-/redirect-producer-3.2.0-rc.2.tgz", + "integrity": "sha512-p3USy+gHDlMf+1USd1cMiW4S+B0gNNaeuYuR3/dLYHjJWJxqlyTdkRbyPD/GP/gyme72MyckBN135PJ0otX8Dg==", "license": "MPL-2.0", "dependencies": { - "@antora/content-classifier": "3.2.0-alpha.12", + "@antora/content-classifier": "3.2.0-rc.2", "vinyl": "~3.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/site-generator": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.2.0-alpha.12.tgz", - "integrity": "sha512-iLt+3RRx0NgA2A2LEg6LLsfxXeb/yYQIvOkrlGJonnADsYhl4U+301Pns9VKLQURY7iUnjkvi7QJrLUb0cJftg==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/site-generator/-/site-generator-3.2.0-rc.2.tgz", + "integrity": "sha512-Cggr+l5Xy6sW6P36q51UXrtKVHplHvIYzv2v7lykxXAPE9fNhdj2spkBQi18sIjC9+lxT9f2F5J/A8+G8HCtpg==", "license": "MPL-2.0", "dependencies": { - "@antora/asciidoc-loader": "3.2.0-alpha.12", - "@antora/content-aggregator": "3.2.0-alpha.12", - "@antora/content-classifier": "3.2.0-alpha.12", - "@antora/document-converter": "3.2.0-alpha.12", - "@antora/file-publisher": "3.2.0-alpha.12", - "@antora/logger": "3.2.0-alpha.12", - "@antora/navigation-builder": "3.2.0-alpha.12", - "@antora/page-composer": "3.2.0-alpha.12", - "@antora/playbook-builder": "3.2.0-alpha.12", - "@antora/redirect-producer": "3.2.0-alpha.12", - "@antora/site-mapper": "3.2.0-alpha.12", - "@antora/site-publisher": "3.2.0-alpha.12", - "@antora/ui-loader": "3.2.0-alpha.12", + "@antora/asciidoc-loader": "3.2.0-rc.2", + "@antora/content-aggregator": "3.2.0-rc.2", + "@antora/content-classifier": "3.2.0-rc.2", + "@antora/document-converter": "3.2.0-rc.2", + "@antora/file-publisher": "3.2.0-rc.2", + "@antora/logger": "3.2.0-rc.2", + "@antora/navigation-builder": "3.2.0-rc.2", + "@antora/page-composer": "3.2.0-rc.2", + "@antora/playbook-builder": "3.2.0-rc.2", + "@antora/redirect-producer": "3.2.0-rc.2", + "@antora/site-mapper": "3.2.0-rc.2", + "@antora/site-publisher": "3.2.0-rc.2", + "@antora/ui-loader": "3.2.0-rc.2", "@antora/user-require-helper": "~3.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/site-mapper": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.2.0-alpha.12.tgz", - "integrity": "sha512-JM9CeuAvqZZejcly64C8WOn2BbMh33iSxZCMyJdWuz1GjIEuI8y3CY0W1YcGNUQtEdEaBfmSArH2aMEz3c4vYg==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/site-mapper/-/site-mapper-3.2.0-rc.2.tgz", + "integrity": "sha512-oucoF+xRGWGNnmxPA4K+RiRx6xk1zGOYnz90cK5Q6uFkwDabOwwJeM6lcp9BgeqL+xqIsw4PXSg87EcuYLsKDQ==", "license": "MPL-2.0", "dependencies": { - "@antora/content-classifier": "3.2.0-alpha.12", + "@antora/content-classifier": "3.2.0-rc.2", "vinyl": "~3.0" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/site-publisher": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.2.0-alpha.12.tgz", - "integrity": "sha512-gde53/tYRgTY8jqYnL1Yq1SmGhd0/+k8iooKBXONzpI6v9crWow4+RTEaGbjVKM0bMS0lBurs+0lyjLzpirUFw==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/site-publisher/-/site-publisher-3.2.0-rc.2.tgz", + "integrity": "sha512-fW+yLMR7NwaLDr9p4pRLFERyVEl36BtTOn+ltkoQ3kjCCl7eopH/43KVLcKK5BFiFLYv8St/3ha8b9iwzSMSpg==", "license": "MPL-2.0", "dependencies": { - "@antora/file-publisher": "3.2.0-alpha.12" + "@antora/file-publisher": "3.2.0-rc.2" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" } }, "node_modules/@antora/ui-loader": { - "version": "3.2.0-alpha.12", - "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.2.0-alpha.12.tgz", - "integrity": "sha512-SkrYKWyMubho7uakypMiHkoV9S+pU9PUxYchCl+FChQGY515LJn1ibOmsZVhcGtbYU1u+YgkBxcG/bujbm4Vfw==", + "version": "3.2.0-rc.2", + "resolved": "https://registry.npmjs.org/@antora/ui-loader/-/ui-loader-3.2.0-rc.2.tgz", + "integrity": "sha512-rZpnyYzrFJDTrUeQRw5MMYxDQXbH4UDioXlzs3lzH444938jaoocRx+Mpo96G8Bi4McixVDvynxUiUyBgiIpcw==", "license": "MPL-2.0", "dependencies": { "@antora/expand-path-helper": "~3.0", @@ -266,15 +310,37 @@ "cache-directory": "~2.0", "fast-glob": "~3.3", "hpagent": "~1.2", - "js-yaml": "~4.1", + "js-yaml": "~4.2", "picomatch": "~4.0", "should-proxy": "~1.0", "simple-get": "~4.0", "vinyl": "~3.0", - "yauzl": "~3.3" + "yauzl": "~3.4" }, "engines": { - "node": ">=18.0.0" + "node": ">=20.0.0" + } + }, + "node_modules/@antora/ui-loader/node_modules/js-yaml": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.2.0.tgz", + "integrity": "sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" } }, "node_modules/@antora/user-require-helper": { @@ -974,12 +1040,12 @@ } }, "node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "version": "14.0.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", + "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", "license": "MIT", "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/compress-commons": { @@ -1968,9 +2034,9 @@ "license": "MIT" }, "node_modules/isomorphic-git": { - "version": "1.37.9", - "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.37.9.tgz", - "integrity": "sha512-jmjEiXhaPQy27AcTwI6KYFXMhYq3RB5G7MKsFZ/J1oW7dMNOKW9rGi05LhD9Shl7lp15WyQ1cRrRdl0aE8yIhQ==", + "version": "1.38.5", + "resolved": "https://registry.npmjs.org/isomorphic-git/-/isomorphic-git-1.38.5.tgz", + "integrity": "sha512-4HBmx1UB+SdRaQh7+zN7lvFQxc4zl7s0oIM/1+5xveu6+QrOeFfx5QDeRNpqCzFHICISEdbK7GilsTsrgE006Q==", "license": "MIT", "dependencies": { "async-lock": "^1.4.1", @@ -2400,31 +2466,31 @@ } }, "node_modules/pino": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/pino/-/pino-10.1.0.tgz", - "integrity": "sha512-0zZC2ygfdqvqK8zJIr1e+wT1T/L+LF6qvqvbzEQ6tiMAoTqEVK9a1K3YRu8HEUvGEvNqZyPJTtb2sNIoTkB83w==", + "version": "10.3.1", + "resolved": "https://registry.npmjs.org/pino/-/pino-10.3.1.tgz", + "integrity": "sha512-r34yH/GlQpKZbU1BvFFqOjhISRo1MNx1tWYsYvmj6KIRHSPMT2+yHOEb1SG6NMvRoHRF0a07kCOox/9yakl1vg==", "license": "MIT", "dependencies": { "@pinojs/redact": "^0.4.0", "atomic-sleep": "^1.0.0", "on-exit-leak-free": "^2.1.0", - "pino-abstract-transport": "^2.0.0", + "pino-abstract-transport": "^3.0.0", "pino-std-serializers": "^7.0.0", "process-warning": "^5.0.0", "quick-format-unescaped": "^4.0.3", "real-require": "^0.2.0", "safe-stable-stringify": "^2.3.1", "sonic-boom": "^4.0.1", - "thread-stream": "^3.0.0" + "thread-stream": "^4.0.0" }, "bin": { "pino": "bin.js" } }, "node_modules/pino-abstract-transport": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-2.0.0.tgz", - "integrity": "sha512-F63x5tizV6WCh4R6RHyi2Ml+M70DNRXt/+HANowMflpgGFMAym/VKm6G7ZOQRjqN7XbGxK1Lg9t6ZrtzOaivMw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pino-abstract-transport/-/pino-abstract-transport-3.0.0.tgz", + "integrity": "sha512-wlfUczU+n7Hy/Ha5j9a/gZNy7We5+cXp8YL+X+PG8S0KXxw7n/JXA3c46Y0zQznIJ83URJiwy7Lh56WLokNuxg==", "license": "MIT", "dependencies": { "split2": "^4.0.0" @@ -2910,14 +2976,23 @@ } }, "node_modules/thread-stream": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-3.1.0.tgz", - "integrity": "sha512-OqyPZ9u96VohAyMfJykzmivOrY2wfMSf3C5TtFJVgN+Hm6aj+voFhlK+kZEIv2FBh1X6Xp3DlnCOfEQ3B2J86A==", + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/thread-stream/-/thread-stream-4.2.0.tgz", + "integrity": "sha512-e2zZ96wSChazBsbENf/Pcm/4swHt2cEKQ92rhUjkL9GCKiTDJIaTBenjE/m9DXi0QBmTMDkFDdOomUy20A1tDQ==", "license": "MIT", "dependencies": { - "real-require": "^0.2.0" + "real-require": "^1.0.0" + }, + "engines": { + "node": ">=20" } }, + "node_modules/thread-stream/node_modules/real-require": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/real-require/-/real-require-1.0.0.tgz", + "integrity": "sha512-P4nbQYQfePJxRSmY+v/KINxVucm4NF3p3s7pJveMTtom52FR4YGltUQLB8idDXwDDWW+eYrWDFbuzUnjoWHF7g==", + "license": "MIT" + }, "node_modules/through": { "version": "2.3.8", "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", @@ -3205,27 +3280,17 @@ } }, "node_modules/yauzl": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.3.1.tgz", - "integrity": "sha512-RNPCUkiE/ZgO4w8i9U5yDQVHaFDdnzaFANElRvpJteCspvmv2VqrRb9lvS6odVD+jqI/zDsxAHJVsafpcheVQQ==", + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-3.4.0.tgz", + "integrity": "sha512-jIH9yLR9wqr0wOS0TpBvo/g/2UgZH5qePVbjgRliiF0BYvOZyaBknKsF+x9Iht0O6sqgnB93rCICdOZFecJuDw==", "license": "MIT", "dependencies": { - "buffer-crc32": "~0.2.3", "pend": "~1.2.0" }, "engines": { "node": ">=12" } }, - "node_modules/yauzl/node_modules/buffer-crc32": { - "version": "0.2.13", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", - "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", - "license": "MIT", - "engines": { - "node": "*" - } - }, "node_modules/yazl": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/yazl/-/yazl-3.3.1.tgz", diff --git a/antora/package.json b/antora/package.json index 1f9ed7fc1f0a..8b95e5f71f40 100644 --- a/antora/package.json +++ b/antora/package.json @@ -3,8 +3,8 @@ "antora": "node npm/antora.js" }, "dependencies": { - "@antora/cli": "3.2.0-alpha.12", - "@antora/site-generator": "3.2.0-alpha.12", + "@antora/cli": "3.2.0-rc.2", + "@antora/site-generator": "3.2.0-rc.2", "@antora/atlas-extension": "1.0.0-alpha.5", "@springio/antora-extensions": "1.14.12", "@springio/antora-xref-extension": "1.0.0-alpha.5", From 28b995ad9837ee020db775aa72cdd0053f9dcedf Mon Sep 17 00:00:00 2001 From: Lee JiWon Date: Wed, 10 Jun 2026 17:24:00 +0900 Subject: [PATCH 5/5] Allow other configurers to run before PropertiesWebClientHttpServiceGroupConfigurer Apply the same fix as 72eaeecd5cd to the WebClient sibling so that a WebClientHttpServiceGroupConfigurer can be ordered ahead of the properties configurer to supply an initial WebClient.Builder. Signed-off-by: Lee JiWon See gh-50737 --- .../PropertiesWebClientHttpServiceGroupConfigurer.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/module/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/service/PropertiesWebClientHttpServiceGroupConfigurer.java b/module/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/service/PropertiesWebClientHttpServiceGroupConfigurer.java index b4460fbab52d..c9d5770316f0 100644 --- a/module/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/service/PropertiesWebClientHttpServiceGroupConfigurer.java +++ b/module/spring-boot-webclient/src/main/java/org/springframework/boot/webclient/autoconfigure/service/PropertiesWebClientHttpServiceGroupConfigurer.java @@ -47,6 +47,11 @@ */ class PropertiesWebClientHttpServiceGroupConfigurer implements WebClientHttpServiceGroupConfigurer { + /** + * The default order for the PropertiesWebClientHttpServiceGroupConfigurer. + */ + private static final int DEFAULT_ORDER = Ordered.HIGHEST_PRECEDENCE + 10; + private final HttpServiceClientProperties properties; private final HttpClientSettingsPropertyMapper clientSettingsPropertyMapper; @@ -65,7 +70,7 @@ class PropertiesWebClientHttpServiceGroupConfigurer implements WebClientHttpServ @Override public int getOrder() { - return Ordered.HIGHEST_PRECEDENCE; + return DEFAULT_ORDER; } @Override