Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
1623 commits
Select commit Hold shift + click to select a range
bce125b
Merge branch '4.0.x' into 4.1.x
snicoll Jul 21, 2026
d9b2f92
Merge branch '4.1.x'
snicoll Jul 21, 2026
0a399e4
Merge branch '4.0.x' into 4.1.x
snicoll Jul 21, 2026
1a5fa33
Merge branch '4.1.x'
snicoll Jul 21, 2026
7edcc06
Merge branch '4.0.x' into 4.1.x
snicoll Jul 22, 2026
a370fa9
Merge branch '4.1.x'
snicoll Jul 22, 2026
b0c21aa
Merge branch '4.0.x' into 4.1.x
snicoll Jul 22, 2026
533df5e
Merge branch '4.1.x'
snicoll Jul 22, 2026
e42c01e
Merge branch '4.0.x' into 4.1.x
snicoll Jul 23, 2026
a9d1c4b
Merge branch '4.1.x'
snicoll Jul 23, 2026
d107f34
Merge branch '4.0.x' into 4.1.x
snicoll Jul 23, 2026
2351527
Merge branch '4.1.x'
snicoll Jul 23, 2026
da318b2
Honor gRPC overall health setting
Jun 20, 2026
e2b4c93
Polish "Honor gRPC overall health setting"
snicoll Jul 23, 2026
ace3066
Merge pull request #50799 from xfocus3
snicoll Jul 23, 2026
834203d
Merge branch '4.1.x'
snicoll Jul 23, 2026
b832216
Merge branch '4.0.x' into 4.1.x
snicoll Jul 23, 2026
d3ef010
Merge branch '4.1.x'
snicoll Jul 23, 2026
45e7f5d
Merge branch '4.0.x' into 4.1.x
snicoll Jul 23, 2026
abf3259
Merge branch '4.1.x'
snicoll Jul 23, 2026
6ae046c
Merge branch '4.0.x' into 4.1.x
snicoll Jul 24, 2026
6970fa5
Merge branch '4.1.x'
snicoll Jul 24, 2026
8adbbd7
Merge branch '4.0.x' into 4.1.x
snicoll Jul 24, 2026
1a42db1
Merge branch '4.1.x'
snicoll Jul 24, 2026
9821dad
Merge branch '4.0.x' into 4.1.x
snicoll Jul 24, 2026
ca67fcb
Merge branch '4.1.x'
snicoll Jul 24, 2026
7d677d0
Merge branch '4.0.x' into 4.1.x
snicoll Jul 24, 2026
d4d503b
Merge branch '4.1.x'
snicoll Jul 24, 2026
07f8034
Polish "Remove APIs that were deprecated for removal in 4.2"
snicoll Jul 24, 2026
bc15631
Merge branch '4.0.x' into 4.1.x
snicoll Jul 25, 2026
2a8da4b
Merge branch '4.1.x'
snicoll Jul 25, 2026
3959c56
Deprecate RestTemplate support
snicoll Jul 25, 2026
5ebd999
Fix stale type reference for OTLP logging transport metadata
wantaekchoi Jul 24, 2026
db7b8a1
Merge pull request #51119 from wantaekchoi
snicoll Jul 25, 2026
7fe6df8
Merge branch '4.1.x'
snicoll Jul 25, 2026
5bdc898
Merge branch '4.0.x' into 4.1.x
snicoll Jul 26, 2026
c731cfd
Merge branch '4.1.x'
snicoll Jul 26, 2026
4c5ed39
Merge branch '4.0.x' into 4.1.x
snicoll Jul 27, 2026
3b225c6
Merge branch '4.1.x'
snicoll Jul 27, 2026
2e650ac
Add testing utility for RestTestClient
bclozel Jul 27, 2026
2f9933e
Replace TestRestTemplate with RestTestClient in smoke tests
bclozel Jul 27, 2026
c7ab67a
Replace TestRestTemplate with RestTestClient in system tests
bclozel Jul 27, 2026
4daf90a
Replace TestRestTemplate with RestTestClient in integration tests
bclozel Jul 27, 2026
c06abc1
Replace TestRestTemplate with RestTestClient in module tests
bclozel Jul 27, 2026
c539367
Deprecate `TestRestTemplate`
bclozel Jul 27, 2026
a36d078
Add support for image-based build caches
TYsewyn Jun 30, 2026
5bd3e64
Polish "Add support for image-based build caches"
snicoll Jul 27, 2026
ccf6767
Merge pull request #50899 from TYsewyn
snicoll Jul 27, 2026
12eeed0
Use GracefulHandler for graceful shutdown of Jetty
Jul 25, 2026
30f358a
Polish "Use GracefulHandler for graceful shutdown of Jetty"
snicoll Jul 27, 2026
9142b18
Merge pull request #51128 from alessio-attilio
snicoll Jul 27, 2026
297ee86
Polish "Deprecate `TestRestTemplate`"
snicoll Jul 27, 2026
e7741bf
Start building against Spring Framework 7.1.0-M1 snapshots
snicoll Jul 24, 2026
cd791e7
Support timeout option in RetryPolicySettings
Chrisg2000 Jun 28, 2026
b77f7fb
Polish "Support timeout option in RetryPolicySettings"
snicoll Jul 28, 2026
39bc9e9
Merge pull request #50891 from Chrisg2000
snicoll Jul 28, 2026
84d0caf
Merge branch '4.0.x' into 4.1.x
mhalbritter Jul 28, 2026
3c45428
Merge branch '4.1.x'
mhalbritter Jul 28, 2026
55a520e
Merge branch '4.0.x' into 4.1.x
snicoll Jul 28, 2026
55fae92
Merge branch '4.1.x'
snicoll Jul 28, 2026
c66a5ef
Disable Micrometer global registry in tests by default
LordKay-sudo Jul 28, 2026
be35ff4
Polish "Disable Micrometer global registry in tests by default"
mhalbritter Jul 29, 2026
c459815
Merge pull request #51142 from LordKay-sudo
mhalbritter Jul 29, 2026
b9fb384
Update Forwarded headers support for Framework
bclozel Jul 29, 2026
aedcc51
Merge branch '4.0.x' into 4.1.x
snicoll Jul 30, 2026
e398c1a
Merge branch '4.1.x'
snicoll Jul 30, 2026
ae3788a
Merge branch '4.0.x' into 4.1.x
snicoll Jul 30, 2026
c4a1a02
Merge branch '4.1.x'
snicoll Jul 30, 2026
811f3a2
Merge branch '4.0.x' into 4.1.x
wilkinsona Jul 30, 2026
3407166
Merge branch '4.1.x'
wilkinsona Jul 30, 2026
941045a
Refine Forwarded headers configuration for Jetty servers
bclozel Jul 30, 2026
53099ae
Temporarily disable test caching to test CI
philwebb Jul 31, 2026
a26ff99
Revert "Temporarily disable test caching to test CI"
philwebb Jul 31, 2026
607fc5c
Start building against Reactor 2026.0.0-SNAPSHOT
bclozel Jul 31, 2026
66a093d
Refine Forwarded headers configuration for Reactor servers
bclozel Jul 31, 2026
edc6fa3
Use temp directory when path of build directory is too long
wilkinsona Jul 31, 2026
03f76ab
Merge branch '4.1.x'
wilkinsona Jul 31, 2026
bf1eeb7
Merge branch '4.0.x' into 4.1.x
wilkinsona Jul 31, 2026
db19648
Merge branch '4.1.x'
wilkinsona Jul 31, 2026
be792dd
Merge branch '4.0.x' into 4.1.x
snicoll Aug 3, 2026
a603b33
Merge branch '4.1.x'
snicoll Aug 3, 2026
435604f
Upgrade to ActiveMQ 6.2.8
snicoll Aug 3, 2026
569bc8c
Upgrade to CycloneDX Maven Plugin 2.9.3
snicoll Aug 3, 2026
66b7e8d
Upgrade to Groovy 5.0.8
snicoll Aug 3, 2026
172c055
Upgrade to Hibernate Validator 9.1.3.Final
snicoll Aug 3, 2026
ae96f82
Upgrade to HttpClient5 5.6.3
snicoll Aug 3, 2026
bca7334
Upgrade to JSpecify 1.0.1
snicoll Aug 3, 2026
533ac91
Upgrade to MariaDB 3.5.10
snicoll Aug 3, 2026
4cae8fa
Upgrade to Maven Jar Plugin 3.5.1
snicoll Aug 3, 2026
74098b3
Upgrade to Native Build Tools Plugin 1.1.6
snicoll Aug 3, 2026
cd659e3
Upgrade to Oracle Database 23.26.3.0.0
snicoll Aug 3, 2026
0499051
Upgrade to R2DBC MySQL 1.4.3
snicoll Aug 3, 2026
bad2873
Upgrade to SQLite JDBC 3.53.2.1
snicoll Aug 3, 2026
b1250f1
Upgrade to Pooled JMS 3.2.3
snicoll Aug 3, 2026
b74c227
Merge branch '4.0.x' into 4.1.x
snicoll Aug 3, 2026
e30eecb
Merge branch '4.1.x'
snicoll Aug 3, 2026
6706def
Upgrade to ActiveMQ 6.3.0
snicoll Aug 3, 2026
6790e0c
Upgrade to Commons Codec 1.22.1
snicoll Aug 3, 2026
303efeb
Upgrade to CycloneDX Maven Plugin 2.9.3
snicoll Aug 3, 2026
5d02335
Upgrade to Groovy 5.0.8
snicoll Aug 3, 2026
5781684
Upgrade to Hibernate Validator 9.1.3.Final
snicoll Aug 3, 2026
38c503f
Upgrade to HttpClient5 5.6.3
snicoll Aug 3, 2026
d8f1b1a
Upgrade to Infinispan 16.2.2
snicoll Aug 3, 2026
99db999
Upgrade to JSpecify 1.0.1
snicoll Aug 3, 2026
2fe899f
Upgrade to Kotlin 2.4.10
snicoll Aug 3, 2026
9bc991a
Upgrade to Kotlin Coroutines 1.11.0
snicoll Aug 3, 2026
ddb8426
Upgrade to Logback 1.6.1
snicoll Aug 3, 2026
097d37b
Upgrade to MariaDB 3.5.10
snicoll Aug 3, 2026
e2e413c
Upgrade to Maven Jar Plugin 3.5.1
snicoll Aug 3, 2026
2c9afbf
Upgrade to Native Build Tools Plugin 1.1.6
snicoll Aug 3, 2026
56a726f
Upgrade to Oracle Database 23.26.3.0.0
snicoll Aug 3, 2026
f3035f7
Upgrade to Pooled JMS 3.2.3
snicoll Aug 3, 2026
bda6590
Upgrade to Pulsar 4.2.4
snicoll Aug 3, 2026
17c55d5
Upgrade to R2DBC MySQL 1.4.3
snicoll Aug 3, 2026
53e60cc
Upgrade to RabbitMQ AMQP Client 1.3.0
snicoll Aug 3, 2026
96022cf
Upgrade to SQLite JDBC 3.53.2.1
snicoll Aug 3, 2026
a7390ac
Upgrade to XmlUnit2 2.13.0
snicoll Aug 3, 2026
3380f92
Polish "Upgrade to Kotlin 2.4.10"
snicoll Aug 3, 2026
7cc5fba
Start building against Micrometer 1.18.0-M1 snapshots
snicoll Aug 3, 2026
6d4b82b
Start building against Micrometer Tracing 1.8.0-M1 snapshots
snicoll Aug 3, 2026
7f15ee9
Start building against Spring AMQP 4.2.0-M1 snapshots
snicoll Aug 3, 2026
a29a44e
Start building against Spring Data Bom 2026.1.0-M1 snapshots
snicoll Aug 3, 2026
9c72f72
Start building against Spring Integration 7.2.0-M1 snapshots
snicoll Aug 3, 2026
c86c644
Start building against Spring Kafka 4.2.0-M1 snapshots
snicoll Aug 3, 2026
35de246
Start building against Spring GraphQL 2.0.5 snapshots
snicoll Aug 3, 2026
99118ff
Start building against Spring gRPC 1.1.1 snapshots
snicoll Aug 3, 2026
f5d45c4
Upgrade to Couchbase Client 3.12.1
snicoll Aug 3, 2026
f074a30
Upgrade to Elasticsearch Client 9.4.4
snicoll Aug 3, 2026
9a79759
Upgrade to Grpc Java 1.81.1
snicoll Aug 3, 2026
82e1eca
Upgrade to MongoDB 5.9.0
snicoll Aug 3, 2026
ba2e9f0
Upgrade to OpenTelemetry 1.64.0
snicoll Aug 3, 2026
3d884c7
Upgrade to Prometheus Client 1.8.0
snicoll Aug 3, 2026
bc64b9c
Upgrade to Protobuf Java 4.35.1
snicoll Aug 3, 2026
6dabe4a
Upgrade to RabbitMQ Client 5.34.0
snicoll Aug 3, 2026
bc28c7d
Merge branch '4.0.x' into 4.1.x
snicoll Aug 4, 2026
75025f0
Merge branch '4.1.x'
snicoll Aug 4, 2026
15dcd82
Start building against Micrometer 1.17.1 snapshots
snicoll Aug 4, 2026
3c9a94c
Start building against Micrometer Tracing 1.7.1 snapshots
snicoll Aug 4, 2026
951b32b
Start building against Reactor Bom 2025.0.7 snapshots
snicoll Aug 4, 2026
fcb4139
Start building against Spring AMQP 4.1.1 snapshots
snicoll Aug 4, 2026
4b141a4
Start building against Spring Batch 6.0.5 snapshots
snicoll Aug 4, 2026
981feed
Start building against Spring Framework 7.0.9 snapshots
snicoll Aug 4, 2026
d93c4bf
Start building against Spring GraphQL 2.0.5 snapshots
snicoll Aug 4, 2026
5aef05e
Start building against Spring gRPC 1.1.1 snapshots
snicoll Aug 4, 2026
66d61df
Start building against Spring Integration 7.1.1 snapshots
snicoll Aug 4, 2026
f642576
Start building against Spring Kafka 4.1.1 snapshots
snicoll Aug 4, 2026
32fccfc
Start building against Spring LDAP 4.1.1 snapshots
snicoll Aug 4, 2026
3c744d9
Start building against Spring Security 7.1.1 snapshots
snicoll Aug 4, 2026
59a6f56
Start building against Spring Session 4.1.1 snapshots
snicoll Aug 4, 2026
9d9de25
Upgrade to Grpc Java 1.81.1
snicoll Aug 4, 2026
d2395ca
Upgrade to Protobuf Java 4.35.1
snicoll Aug 4, 2026
bb7d09b
Upgrade to Kafka 4.3.1
snicoll Aug 4, 2026
6da8e83
Merge branch '4.1.x'
snicoll Aug 4, 2026
d70bcd5
Merge branch '4.0.x' into 4.1.x
snicoll Aug 4, 2026
258a1f2
Merge branch '4.1.x'
snicoll Aug 4, 2026
19181e7
Start building against Spring Batch 6.1.0-M1 snapshots
snicoll Aug 4, 2026
ffa332c
Start building against Spring LDAP 4.1.1 snapshots
snicoll Aug 4, 2026
14e8887
Start building against Spring Security 7.1.1 snapshots
snicoll Aug 4, 2026
c9efe39
Start building against Spring Session 4.1.1 snapshots
snicoll Aug 4, 2026
7b2cf7f
Merge branch '4.0.x' into 4.1.x
snicoll Aug 4, 2026
5b2dbdb
Merge branch '4.1.x'
snicoll Aug 4, 2026
97ee86d
Merge branch '4.0.x' into 4.1.x
snicoll Aug 5, 2026
9ae8f7b
Merge branch '4.1.x'
snicoll Aug 5, 2026
a7288b1
Merge branch '4.0.x' into 4.1.x
snicoll Aug 5, 2026
a11f5f5
Merge branch '4.1.x'
snicoll Aug 5, 2026
b39dfa0
Merge branch '4.0.x' into 4.1.x
snicoll Aug 5, 2026
abe841e
Merge branch '4.1.x'
snicoll Aug 5, 2026
55bb4eb
Merge branch '4.0.x' into 4.1.x
snicoll Aug 5, 2026
c1d83d0
Merge branch '4.1.x'
snicoll Aug 5, 2026
bf461b0
Backoff from exposing gRPC server port if gRPC is not available
snicoll Aug 7, 2026
6dc87d9
Merge branch '4.1.x'
snicoll Aug 7, 2026
faa52af
Merge branch '4.0.x' into 4.1.x
snicoll Aug 7, 2026
8def17d
Merge branch '4.1.x'
snicoll Aug 7, 2026
41c857c
Upgrade to Couchbase Client 3.12.2
snicoll Aug 7, 2026
2af4680
Upgrade to Netty 4.2.17.Final
snicoll Aug 7, 2026
c350436
Upgrade to Jetty 12.1.12
snicoll Aug 7, 2026
50ecfcb
Upgrade to Jetty 12.1.12
snicoll Aug 7, 2026
62397ab
Upgrade to jOOQ 3.21.7
snicoll Aug 7, 2026
d8621eb
Upgrade to Native Build Tools Plugin 1.1.8
snicoll Aug 7, 2026
db56096
Upgrade to Netty 4.2.17.Final
snicoll Aug 7, 2026
7ce8f7b
Upgrade to Pulsar 4.2.4
snicoll Aug 7, 2026
c968710
Upgrade to Yasson 3.0.5
snicoll Aug 7, 2026
bb23ef7
Add testClasspath option to run and start goals
snicoll Aug 7, 2026
aa469fb
Merge branch '4.0.x' into 4.1.x
snicoll Aug 7, 2026
12cb2e8
Merge branch '4.1.x'
snicoll Aug 7, 2026
68fcf1c
Upgrade to HtmlUnit 5.4.0
snicoll Aug 8, 2026
8e4ded4
Upgrade to jOOQ 3.21.7
snicoll Aug 8, 2026
cca26a6
Upgrade to JUnit Jupiter 6.1.3
snicoll Aug 8, 2026
9dedbf5
Upgrade to Native Build Tools Plugin 1.1.8
snicoll Aug 8, 2026
f1f4a34
Upgrade to Qpid ProtonJ2 1.2.0
snicoll Aug 8, 2026
c38bfe4
Upgrade to RabbitMQ AMQP Client 1.4.0
snicoll Aug 8, 2026
522d3cf
Upgrade to RabbitMQ Stream Client 1.9.0
snicoll Aug 8, 2026
5129a44
Upgrade to Yasson 3.0.5
snicoll Aug 8, 2026
ee3c48d
Upgrade to Hazelcast 5.7.0
snicoll Aug 8, 2026
84f8a6f
Polish "Backoff from exposing gRPC server port if gRPC is not available"
snicoll Aug 10, 2026
6bbab50
Merge branch '4.1.x'
snicoll Aug 10, 2026
28fa881
Merge branch '4.0.x' into 4.1.x
snicoll Aug 10, 2026
5a9505c
Merge branch '4.1.x'
snicoll Aug 10, 2026
3b92c4e
Merge branch '4.0.x' into 4.1.x
snicoll Aug 10, 2026
86f1eac
Merge branch '4.1.x'
snicoll Aug 10, 2026
90df859
Start building against Spring Pulsar 2.0.7 snapshots
snicoll Aug 10, 2026
230afd2
Upgrade to ActiveMQ 6.2.9
snicoll Aug 10, 2026
c9edd31
Upgrade to HttpClient5 5.6.4
snicoll Aug 10, 2026
559a981
Upgrade to Protobuf Maven Plugin 5.1.8
snicoll Aug 10, 2026
6f1e021
Start building against Spring HATEOAS 3.2.0-M1 snapshots
snicoll Aug 10, 2026
f566ac7
Start building against Spring Pulsar 2.0.7 snapshots
snicoll Aug 10, 2026
613932c
Upgrade to ActiveMQ 6.3.1
snicoll Aug 10, 2026
1778ec5
Upgrade to Elasticsearch Client 9.5.0
snicoll Aug 10, 2026
4805159
Upgrade to HttpClient5 5.6.4
snicoll Aug 10, 2026
127e4c9
Upgrade to Jedis 8.0.0
snicoll Aug 10, 2026
5774779
Upgrade to Lettuce 7.6.0.RELEASE
snicoll Aug 10, 2026
7027d1f
Upgrade to MongoDB 5.9.1
snicoll Aug 10, 2026
01a9ac0
Upgrade to Neo4j Java Driver 6.2.1
snicoll Aug 10, 2026
48a2463
Upgrade to Protobuf Maven Plugin 5.1.8
snicoll Aug 10, 2026
a31bf32
Adapt to changes in micrometer snapshots
snicoll Aug 10, 2026
1ab49f2
Merge branch '4.0.x' into 4.1.x
snicoll Aug 10, 2026
b6490be
Merge branch '4.1.x'
snicoll Aug 10, 2026
2fae1aa
Merge branch '4.0.x' into 4.1.x
snicoll Aug 11, 2026
aff4736
Merge branch '4.1.x'
snicoll Aug 11, 2026
655aa22
Merge branch '4.0.x' into 4.1.x
snicoll Aug 11, 2026
db31f81
Merge branch '4.1.x'
snicoll Aug 11, 2026
c4e6c8a
Merge branch '4.0.x' into 4.1.x
snicoll Aug 11, 2026
15c170c
Merge branch '4.1.x'
snicoll Aug 11, 2026
98afa8a
Merge branch '4.0.x' into 4.1.x
snicoll Aug 11, 2026
19b1962
Merge branch '4.1.x'
snicoll Aug 11, 2026
f8243f5
Start building against Spring Data Bom 2026.0.1 snapshots
snicoll Aug 11, 2026
3ff6ad8
Start building against Spring HATEOAS 3.1.2 snapshots
snicoll Aug 11, 2026
87932c4
Upgrade to Elasticsearch Client 9.4.4
snicoll Aug 11, 2026
0c52364
Upgrade to MongoDB 5.8.1
snicoll Aug 11, 2026
b11dbe6
Merge branch '4.0.x' into 4.1.x
snicoll Aug 11, 2026
53d392a
Merge branch '4.1.x'
snicoll Aug 11, 2026
e665232
Upgrade to Grpc Java 1.83.1
philwebb Aug 11, 2026
df902ae
Merge branch '4.1.x'
philwebb Aug 11, 2026
328390a
Remove code tag in property description
ngocnhan-tran1996 Aug 11, 2026
4518e11
Polish "Remove code tag in property description"
snicoll Aug 11, 2026
7313b5f
Merge pull request #51348 from ngocnhan-tran1996
snicoll Aug 11, 2026
6f6d830
Merge branch '4.1.x'
snicoll Aug 11, 2026
76521bb
Upgrade to Elasticsearch Client 9.4.5
snicoll Aug 11, 2026
f1d395f
Merge branch '4.0.x' into 4.1.x
snicoll Aug 11, 2026
c8c93d0
Merge branch '4.1.x'
snicoll Aug 11, 2026
1757021
Merge branch '4.0.x' into 4.1.x
snicoll Aug 11, 2026
bfb9c8d
Merge branch '4.1.x'
snicoll Aug 11, 2026
fc6acdb
Reset cached AppendableByteArray before it is reused
skdas20 Jul 29, 2026
dafadea
Polish "Reset cached AppendableByteArray before it is reused"
snicoll Aug 11, 2026
af69828
Merge pull request #51156 from skdas20
snicoll Aug 11, 2026
270dfe3
Merge branch '4.1.x'
snicoll Aug 11, 2026
3575c12
Start building against Spring Security 7.2.0-M1 snapshots
snicoll Aug 12, 2026
188860f
Adapt to changes in micrometer snapshots
jonatan-ivanov Aug 14, 2026
e3d4b1c
Upgrade to MongoDB 5.9.2
snicoll Aug 14, 2026
16f5fff
Close the stream when comparing AOT file content
dlwldn30 Aug 16, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
4 changes: 2 additions & 2 deletions .github/workflows/build-and-deploy-snapshot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ on:
workflow_dispatch:
push:
branches:
- '4.0.x'
- 'main'
permissions:
contents: read
concurrency:
Expand All @@ -30,7 +30,7 @@ jobs:
- name: Deploy
uses: spring-io/artifactory-deploy-action@926d7f7cc810569395346bf3a4d91b380b3e355b # v0.0.4
with:
build-name: ${{ vars.COMMERCIAL && format('spring-boot-commercial-{0}', '4.0.x') || format('spring-boot-{0}', '4.0.x') }}
build-name: ${{ vars.COMMERCIAL && format('spring-boot-commercial-{0}', '4.2.x') || format('spring-boot-{0}', '4.2.x') }}
folder: 'deployment-repository'
password: ${{ vars.COMMERCIAL && secrets.COMMERCIAL_ARTIFACTORY_PASSWORD || secrets.ARTIFACTORY_PASSWORD }}
project: ${{ vars.COMMERCIAL && 'spring' }}
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: CI
on:
push:
branches:
- '4.0.x'
- 'main'
permissions:
contents: read
jobs:
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/release-milestone.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,8 @@ name: Release Milestone
on:
push:
tags:
- v4.0.0-M[0-9]
- v4.0.0-RC[0-9]
- v4.2.0-M[0-9]
- v4.2.0-RC[0-9]
permissions:
contents: read
concurrency:
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ name: Release
on:
push:
tags:
- v4.0.[0-9]+
- v4.2.[0-9]+
permissions:
contents: read
concurrency:
Expand Down Expand Up @@ -126,7 +126,7 @@ jobs:
- name: Publish to SDKMAN!
uses: ./.github/actions/publish-to-sdkman
with:
make-default: false
make-default: true
sdkman-consumer-key: ${{ secrets.SDKMAN_CONSUMER_KEY }}
sdkman-consumer-token: ${{ secrets.SDKMAN_CONSUMER_TOKEN }}
spring-boot-version: ${{ needs.build-and-stage-release.outputs.version }}
Expand Down Expand Up @@ -174,5 +174,6 @@ jobs:
uses: ./.github/actions/create-github-release
with:
commercial: ${{ vars.COMMERCIAL }}
latest: true
milestone: ${{ needs.build-and-stage-release.outputs.version }}
token: ${{ secrets.GH_ACTIONS_REPO_TOKEN }}
4 changes: 2 additions & 2 deletions .github/workflows/run-system-tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,12 +2,12 @@ name: Run System Tests
on:
push:
branches:
- '4.0.x'
- "main"
permissions:
contents: read
jobs:
run-system-tests:
name: 'Java ${{ matrix.java.version}}'
name: "Java ${{ matrix.java.version}}"
if: ${{ github.repository == 'spring-projects/spring-boot' }}
runs-on: ${{ vars.UBUNTU_MEDIUM || 'ubuntu-latest' }}
strategy:
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/trigger-docs-build.yml
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
name: Trigger Docs Build
on:
push:
branches: '4.0.x'
branches: 'main'
paths: [ 'antora/*' ]
workflow_dispatch:
inputs:
Expand Down
2 changes: 1 addition & 1 deletion README.adoc
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
= Spring Boot image:https://github.com/spring-projects/spring-boot/actions/workflows/build-and-deploy-snapshot.yml/badge.svg?branch=4.0.x["Build Status", link="https://github.com/spring-projects/spring-boot/actions/workflows/build-and-deploy-snapshot.yml?query=branch%3A4.0.x"] image:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A["Revved up by Develocity", link="https://ge.spring.io/scans?&search.rootProjectNames=Spring%20Boot%20Build&search.rootProjectNames=spring-boot-build"]
= Spring Boot image:https://github.com/spring-projects/spring-boot/actions/workflows/build-and-deploy-snapshot.yml/badge.svg?branch=main["Build Status", link="https://github.com/spring-projects/spring-boot/actions/workflows/build-and-deploy-snapshot.yml?query=branch%3Amain"] image:https://img.shields.io/badge/Revved%20up%20by-Develocity-06A0CE?logo=Gradle&labelColor=02303A["Revved up by Develocity", link="https://ge.spring.io/scans?&search.rootProjectNames=Spring%20Boot%20Build&search.rootProjectNames=spring-boot-build"]

:docs: https://docs.spring.io/spring-boot
:github: https://github.com/spring-projects/spring-boot
Expand Down
2 changes: 2 additions & 0 deletions build-plugin/spring-boot-gradle-plugin/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,7 @@ dependencies {
implementation("org.apache.commons:commons-compress")
implementation("org.springframework:spring-core")

optional("com.google.protobuf:protobuf-gradle-plugin")
optional("org.graalvm.buildtools:native-gradle-plugin")
optional("org.cyclonedx:cyclonedx-gradle-plugin") {
exclude(group: "javax.annotation", module: "javax.annotation-api")
Expand All @@ -64,6 +65,7 @@ dependencies {
testImplementation("org.apache.httpcomponents.client5:httpclient5")
testImplementation("org.graalvm.buildtools:native-gradle-plugin")
testImplementation("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion")
testImplementation("org.jetbrains.kotlin:kotlin-compiler-embeddable:$kotlinVersion")
testImplementation("org.jetbrains.kotlin:kotlin-compiler-runner:$kotlinVersion")
testImplementation("org.jetbrains.kotlin:kotlin-daemon-client:$kotlinVersion")
testImplementation("org.tomlj:tomlj:1.0.0")
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -469,6 +469,20 @@ void buildsImageOnLinuxArmWithImagePlatformLinuxArm() throws IOException {
removeImages(projectName, builderImage, runImage, buildpackImage);
}

@TestTemplate
void buildsImageWithMultipleCommandLineEnvironments() throws IOException {
writeMainClass();
writeLongNameResource();
BuildResult result = this.gradleBuild.build("bootBuildImage", "--environment", "BP_LIVE_RELOAD_ENABLED=true",
"--environment", "MY_CUSTOM_VAR=hello_world");
BuildTask task = result.task(":bootBuildImage");
assertThat(task).isNotNull();
assertThat(task.getOutcome()).isEqualTo(TaskOutcome.SUCCESS);
assertThat(result.getOutput()).contains("BP_LIVE_RELOAD_ENABLED=true");
assertThat(result.getOutput()).contains("MY_CUSTOM_VAR=hello_world");
removeImages(this.gradleBuild.getProjectDir().getName());
}

@TestTemplate
@EnabledOnOs(value = { OS.LINUX, OS.MAC }, architectures = "amd64",
disabledReason = "The expected failure condition will not fail on ARM architectures")
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
plugins {
id 'java'
id 'org.springframework.boot' version '{version-spring-boot}'
}

tasks.named("bootJar") {
mainClass = 'com.example.ExampleApplication'
}

// tag::caches[]
tasks.named("bootBuildImage") {
buildCache {
image {
name = "docker.io/library/${rootProject.name}:build"
}
}
}
// end::caches[]

tasks.register("bootBuildImageCaches") {
doFirst {
bootBuildImage.buildCache.asCache().with { println "buildCache=$name" }
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
import org.springframework.boot.gradle.tasks.bundling.BootBuildImage

plugins {
java
id("org.springframework.boot") version "{version-spring-boot}"
}

// tag::caches[]
tasks.named<BootBuildImage>("bootBuildImage") {
buildCache {
image {
name.set("docker.io/library/${rootProject.name}:build")
}
}
}
// end::caches[]

tasks.register("bootBuildImageCaches") {
doFirst {
println("buildCache=" + tasks.getByName<BootBuildImage>("bootBuildImage").buildCache.asCache()?.image?.name)
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,9 @@ include::example$integrating-with-actuator/build-info-basic.gradle.kts[tags=buil
----
======

This will configure a {apiref-gradle-plugin-boot-build-info}[`BuildInfo`] task named `bootBuildInfo` and, if it exists, make the Java plugin's `classes` task depend upon it.
The task's destination directory will be `META-INF` in the output directory of the main source set's resources (typically `build/resources/main`).
This will configure a {apiref-gradle-plugin-boot-build-info}[`BuildInfo`] task named `bootBuildInfo`.
The task's destination directory will be `build/bootBuildInfo` and its filename will be `META-INF/build-info.properties`.
If the main source set exists, its resources are configured to use the output of the `bootBuildInfo` task as a src dir.

By default, the generated build information is derived from the project:

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ Acceptable values are `ALWAYS`, `NEVER`, and `IF_NOT_PRESENT`.
| `ALWAYS`

| `environment`
|
| `--environment`
| Environment variables that should be passed to the builder.
| Empty.

Expand Down Expand Up @@ -346,6 +346,15 @@ include::example$packaging/boot-build-image-env.gradle.kts[tags=env]
----
======

Environment variables can also be specified on the command line, as shown in the following example:

[source,shell]
----
$ gradle bootBuildImage --environment BP_JVM_VERSION=17
----

`--environment` can be used multiple times to specify multiple environment variables.

If there is a network proxy between the Docker daemon the builder runs in and network locations that buildpacks download artifacts from, you will need to configure the builder to use the proxy.
When using the Paketo builder, this can be accomplished by setting the `HTTPS_PROXY` and/or `HTTP_PROXY` environment variables as show in the following example:

Expand Down Expand Up @@ -564,6 +573,24 @@ include::example$packaging/boot-build-image-bind-caches.gradle.kts[tags=caches]
----
======

The build cache can also be stored in an image instead of a named volume, which allows the cache to be shared between hosts by pushing and pulling it from an image registry, as shown in the following example:

[tabs]
======
Groovy::
+
[source,groovy,indent=0,subs="verbatim,attributes"]
----
include::example$packaging/boot-build-image-image-caches.gradle[tags=caches]
----
Kotlin::
+
[source,kotlin,indent=0,subs="verbatim,attributes"]
----
include::example$packaging/boot-build-image-image-caches.gradle.kts[tags=caches]
----
======



[[build-image.examples.docker]]
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,3 +104,17 @@ When the {url-cyclonedx-docs-gradle-plugin}[CycloneDX plugin] is applied to a pr
.. Disable full license texts.
. Adds the SBOM under `META-INF/sbom` in the generated jar or war file.
. Adds the `Sbom-Format` and `Sbom-Location` to the manifest of the jar or war file.



[[reacting-to-other-plugins.protobuf]]
== Reacting to the Protobuf Plugin

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.

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`.
Original file line number Diff line number Diff line change
Expand Up @@ -16,10 +16,9 @@

package org.springframework.boot.gradle.dsl;

import java.io.File;

import org.gradle.api.Action;
import org.gradle.api.Project;
import org.gradle.api.file.SourceDirectorySet;
import org.gradle.api.plugins.BasePlugin;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.JavaPluginExtension;
Expand All @@ -31,7 +30,6 @@
import org.jspecify.annotations.Nullable;

import org.springframework.boot.gradle.tasks.buildinfo.BuildInfo;
import org.springframework.util.Assert;

/**
* Entry point to Spring Boot's Gradle DSL.
Expand Down Expand Up @@ -66,36 +64,41 @@ public Property<String> getMainClass() {
}

/**
* Creates a new {@link BuildInfo} task named {@code bootBuildInfo} and configures the
* Java plugin's {@code classes} task to depend upon it.
* Creates a new {@link BuildInfo} task named {@code bootBuildInfo} and adds its
* output as a {@link SourceDirectorySet#srcDir source directory} of the main source
* set's {@link SourceSet#getResources resources}.
* <p>
* By default, the task's destination dir will be a directory named {@code META-INF}
* beneath the main source set's resources output directory, and the task's project
* artifact will be the base name of the {@code bootWar} or {@code bootJar} task.
* By default, the task's project artifact will be the archive base name of the
* {@code bootWar} or {@code bootJar} task.
*/
public void buildInfo() {
buildInfo(null);
}

/**
* Creates a new {@link BuildInfo} task named {@code bootBuildInfo} and configures the
* Java plugin's {@code classes} task to depend upon it. The task is passed to the
* given {@code configurer} for further configuration.
* Creates a new {@link BuildInfo} task named {@code bootBuildInfo} and adds its
* output as a {@link SourceDirectorySet#srcDir source directory} of the main source
* set's {@link SourceSet#getResources resources}. The task is passed to the given
* {@code configurer} for further configuration.
* <p>
* By default, the task's destination dir will be a directory named {@code META-INF}
* beneath the main source set's resources output directory, and the task's project
* artifact will be the base name of the {@code bootWar} or {@code bootJar} task.
* By default, the task's project artifact will be the archive base name of the
* {@code bootWar} or {@code bootJar} task.
* @param configurer the task configurer
*/
public void buildInfo(@Nullable Action<BuildInfo> configurer) {
TaskContainer tasks = this.project.getTasks();
TaskProvider<BuildInfo> bootBuildInfo = tasks.register("bootBuildInfo", BuildInfo.class,
this::configureBuildInfoTask);
this.project.getPlugins().withType(JavaPlugin.class, (plugin) -> {
tasks.named(JavaPlugin.CLASSES_TASK_NAME).configure((task) -> task.dependsOn(bootBuildInfo));
bootBuildInfo.configure((buildInfo) -> buildInfo.getProperties()
.getArtifact()
.convention(this.project.provider(this::determineArtifactBaseName)));
this.project.getExtensions()
.getByType(JavaPluginExtension.class)
.getSourceSets()
.getByName(SourceSet.MAIN_SOURCE_SET_NAME)
.getResources()
.srcDir(bootBuildInfo);
});
if (configurer != null) {
bootBuildInfo.configure(configurer);
Expand All @@ -105,20 +108,6 @@ public void buildInfo(@Nullable Action<BuildInfo> configurer) {
private void configureBuildInfoTask(BuildInfo task) {
task.setGroup(BasePlugin.BUILD_GROUP);
task.setDescription("Generates a META-INF/build-info.properties file.");
task.getDestinationDir()
.convention(this.project.getLayout()
.dir(this.project.provider(() -> new File(determineMainSourceSetResourcesOutputDir(), "META-INF"))));
}

private File determineMainSourceSetResourcesOutputDir() {
File resourcesDir = this.project.getExtensions()
.getByType(JavaPluginExtension.class)
.getSourceSets()
.getByName(SourceSet.MAIN_SOURCE_SET_NAME)
.getOutput()
.getResourcesDir();
Assert.state(resourcesDir != null, "'resourcesDir' must not be null");
return resourcesDir;
}

private @Nullable String determineArtifactBaseName() {
Expand Down
Loading