@@ -23,12 +23,20 @@ sourceSets {
2323 setSrcDirs(listOf (" src/main/javaSpring3" ))
2424 }
2525 }
26+ create(" javaSpring4" ) {
27+ java {
28+ setSrcDirs(listOf (" src/main/javaSpring4" ))
29+ }
30+ }
2631}
2732
2833configurations {
2934 named(" javaSpring3CompileOnly" ) {
3035 extendsFrom(configurations[" compileOnly" ])
3136 }
37+ named(" javaSpring4CompileOnly" ) {
38+ extendsFrom(configurations[" compileOnly" ])
39+ }
3240}
3341
3442dependencies {
@@ -110,6 +118,18 @@ dependencies {
110118 add(" javaSpring3CompileOnly" , project(" :instrumentation:spring:spring-web:spring-web-3.1:library" ))
111119 add(" javaSpring3CompileOnly" , project(" :instrumentation:spring:spring-webmvc:spring-webmvc-6.0:library" ))
112120
121+ // Spring Boot 4
122+ add(" javaSpring4CompileOnly" , files(sourceSets.main.get().output.classesDirs))
123+ add(" javaSpring4CompileOnly" , " org.springframework.boot:spring-boot-starter-web:4.0.0" )
124+ add(" javaSpring4CompileOnly" , " org.springframework.boot:spring-boot-starter-data-jdbc:4.0.0" )
125+ add(" javaSpring4CompileOnly" , " org.springframework.boot:spring-boot-starter-kafka:4.0.0" )
126+ add(" javaSpring4CompileOnly" , " io.opentelemetry:opentelemetry-sdk-extension-autoconfigure" )
127+ add(" javaSpring4CompileOnly" , " jakarta.servlet:jakarta.servlet-api:6.1.0" )
128+ add(" javaSpring4CompileOnly" , project(" :instrumentation:spring:spring-web:spring-web-3.1:library" ))
129+ add(" javaSpring4CompileOnly" , project(" :instrumentation:spring:spring-webmvc:spring-webmvc-6.0:library" ))
130+ add(" javaSpring4CompileOnly" , project(" :instrumentation:kafka:kafka-clients:kafka-clients-2.6:library" ))
131+ add(" javaSpring4CompileOnly" , project(" :instrumentation:spring:spring-kafka-2.7:library" ))
132+
113133 // tests don't work with spring boot 4 yet
114134 latestDepTestLibrary(" org.springframework.boot:spring-boot-starter-test:3.+" ) // documented limitation
115135 latestDepTestLibrary(" org.springframework.boot:spring-boot-starter-actuator:3.+" ) // documented limitation
@@ -186,6 +206,20 @@ testing {
186206 }
187207 }
188208
209+ val testSpring4 by registering(JvmTestSuite ::class ) {
210+ dependencies {
211+ implementation(project())
212+ implementation(" org.springframework.boot:spring-boot-starter-web:4.0.0" )
213+ implementation(" io.opentelemetry:opentelemetry-sdk-extension-autoconfigure" )
214+ implementation(project(" :instrumentation:spring:spring-web:spring-web-3.1:library" ))
215+ implementation(project(" :instrumentation:spring:spring-webmvc:spring-webmvc-6.0:library" ))
216+ implementation(" jakarta.servlet:jakarta.servlet-api:6.1.0" )
217+ implementation(" org.springframework.boot:spring-boot-starter-test:4.0.0" ) {
218+ exclude(" org.junit.vintage" , " junit-vintage-engine" )
219+ }
220+ }
221+ }
222+
189223 val testDeclarativeConfig by registering(JvmTestSuite ::class ) {
190224 dependencies {
191225 implementation(project())
@@ -234,12 +268,30 @@ tasks {
234268 isEnabled = testSpring3
235269 }
236270
271+ named<JavaCompile >(" compileJavaSpring4Java" ) {
272+ sourceCompatibility = " 17"
273+ targetCompatibility = " 17"
274+ options.release.set(17 )
275+ }
276+
277+ named<JavaCompile >(" compileTestSpring4Java" ) {
278+ sourceCompatibility = " 17"
279+ targetCompatibility = " 17"
280+ options.release.set(17 )
281+ }
282+
283+ named<Test >(" testSpring4" ) {
284+ isEnabled = testSpring3 // same condition as Spring 3 (requires Java 17+)
285+ }
286+
237287 named<Jar >(" jar" ) {
238288 from(sourceSets[" javaSpring3" ].output)
289+ from(sourceSets[" javaSpring4" ].output)
239290 }
240291
241292 named<Jar >(" sourcesJar" ) {
242293 from(sourceSets[" javaSpring3" ].java)
294+ from(sourceSets[" javaSpring4" ].java)
243295 }
244296
245297 val testStableSemconv by registering(Test ::class ) {
0 commit comments