diff --git a/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java b/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java index 79400a0a71..4b1b8c02fb 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/JavaConventions.java @@ -48,9 +48,11 @@ import org.gradle.api.tasks.testing.Test; import org.gradle.testretry.TestRetryPlugin; import org.gradle.testretry.TestRetryTaskExtension; +import org.springframework.boot.build.classpath.CheckClasspathForProhibitedDependencies; import org.springframework.boot.build.optional.OptionalDependenciesPlugin; import org.springframework.boot.build.testing.TestFailuresPlugin; import org.springframework.boot.build.toolchain.ToolchainPlugin; +import org.springframework.util.StringUtils; /** * Conventions that are applied in the presence of the {@link JavaBasePlugin}. When the @@ -112,6 +114,7 @@ class JavaConventions { configureJarManifestConventions(project); configureDependencyManagement(project); configureToolchain(project); + configureProhibitedDependencyChecks(project); }); } @@ -239,4 +242,26 @@ class JavaConventions { project.getPlugins().apply(ToolchainPlugin.class); } + private void configureProhibitedDependencyChecks(Project project) { + SourceSetContainer sourceSets = project.getExtensions().getByType(SourceSetContainer.class); + sourceSets.all((sourceSet) -> createProhibitedDependenciesChecks(project, + sourceSet.getCompileClasspathConfigurationName(), sourceSet.getRuntimeClasspathConfigurationName())); + } + + private void createProhibitedDependenciesChecks(Project project, String... configurationNames) { + ConfigurationContainer configurations = project.getConfigurations(); + for (String configurationName : configurationNames) { + Configuration configuration = configurations.getByName(configurationName); + createProhibitedDependenciesCheck(configuration, project); + } + } + + private void createProhibitedDependenciesCheck(Configuration classpath, Project project) { + CheckClasspathForProhibitedDependencies checkClasspathForProhibitedDependencies = project.getTasks().create( + "check" + StringUtils.capitalize(classpath.getName() + "ForProhibitedDependencies"), + CheckClasspathForProhibitedDependencies.class); + checkClasspathForProhibitedDependencies.setClasspath(classpath); + project.getTasks().getByName(JavaBasePlugin.CHECK_TASK_NAME).dependsOn(checkClasspathForProhibitedDependencies); + } + } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/classpath/CheckClasspathForProhibitedDependencies.java b/buildSrc/src/main/java/org/springframework/boot/build/classpath/CheckClasspathForProhibitedDependencies.java index 78a1f25377..f0ea6caa8a 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/classpath/CheckClasspathForProhibitedDependencies.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/classpath/CheckClasspathForProhibitedDependencies.java @@ -70,6 +70,12 @@ public class CheckClasspathForProhibitedDependencies extends DefaultTask { if (group.equals("javax.batch")) { return false; } + if (group.equals("javax.cache")) { + return false; + } + if (group.equals("javax.money")) { + return false; + } if (group.startsWith("javax")) { return true; } diff --git a/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java b/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java index 58494606da..ec39845573 100644 --- a/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java +++ b/buildSrc/src/main/java/org/springframework/boot/build/starters/StarterPlugin.java @@ -33,7 +33,6 @@ import org.gradle.api.tasks.bundling.Jar; import org.springframework.boot.build.ConventionsPlugin; import org.springframework.boot.build.DeployedPlugin; import org.springframework.boot.build.classpath.CheckClasspathForConflicts; -import org.springframework.boot.build.classpath.CheckClasspathForProhibitedDependencies; import org.springframework.boot.build.classpath.CheckClasspathForUnnecessaryExclusions; import org.springframework.util.StringUtils; @@ -62,7 +61,6 @@ public class StarterPlugin implements Plugin { project.getArtifacts().add("starterMetadata", project.provider(starterMetadata::getDestination), (artifact) -> artifact.builtBy(starterMetadata)); createClasspathConflictsCheck(runtimeClasspath, project); - createProhibitedDependenciesCheck(runtimeClasspath, project); createUnnecessaryExclusionsCheck(runtimeClasspath, project); configureJarManifest(project); } @@ -75,14 +73,6 @@ public class StarterPlugin implements Plugin { project.getTasks().getByName(JavaBasePlugin.CHECK_TASK_NAME).dependsOn(checkClasspathForConflicts); } - private void createProhibitedDependenciesCheck(Configuration classpath, Project project) { - CheckClasspathForProhibitedDependencies checkClasspathForProhibitedDependencies = project.getTasks().create( - "check" + StringUtils.capitalize(classpath.getName() + "ForProhibitedDependencies"), - CheckClasspathForProhibitedDependencies.class); - checkClasspathForProhibitedDependencies.setClasspath(classpath); - project.getTasks().getByName(JavaBasePlugin.CHECK_TASK_NAME).dependsOn(checkClasspathForProhibitedDependencies); - } - private void createUnnecessaryExclusionsCheck(Configuration classpath, Project project) { CheckClasspathForUnnecessaryExclusions checkClasspathForUnnecessaryExclusions = project.getTasks().create( "check" + StringUtils.capitalize(classpath.getName() + "ForUnnecessaryExclusions"), diff --git a/buildSrc/src/test/java/org/springframework/boot/build/ConventionsPluginTests.java b/buildSrc/src/test/java/org/springframework/boot/build/ConventionsPluginTests.java index 8edb0ed800..ce594c9127 100644 --- a/buildSrc/src/test/java/org/springframework/boot/build/ConventionsPluginTests.java +++ b/buildSrc/src/test/java/org/springframework/boot/build/ConventionsPluginTests.java @@ -105,6 +105,12 @@ class ConventionsPluginTests { out.println("version = '1.2.3'"); out.println("sourceCompatibility = '1.8'"); out.println("description 'Test'"); + out.println("repositories {"); + out.println(" mavenCentral()"); + out.println("}"); + out.println("dependencies {"); + out.println(" implementation(platform(\"org.junit:junit-bom:5.6.0\"))"); + out.println("}"); } runGradle("build"); File file = new File(this.projectDir, "/build/libs/" + this.projectDir.getName() + "-1.2.3-sources.jar"); @@ -134,6 +140,12 @@ class ConventionsPluginTests { out.println("version = '1.2.3'"); out.println("sourceCompatibility = '1.8'"); out.println("description 'Test'"); + out.println("repositories {"); + out.println(" mavenCentral()"); + out.println("}"); + out.println("dependencies {"); + out.println(" implementation(platform(\"org.junit:junit-bom:5.6.0\"))"); + out.println("}"); } runGradle("build"); File file = new File(this.projectDir, "/build/libs/" + this.projectDir.getName() + "-1.2.3-javadoc.jar"); diff --git a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle index ea42f603eb..78a57584f3 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle @@ -26,7 +26,9 @@ dependencies { implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") optional("ch.qos.logback:logback-classic") - optional("com.datastax.oss:java-driver-core") + optional("com.datastax.oss:java-driver-core") { + exclude group: "org.slf4j", module: "jcl-over-slf4j" + } optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml") optional("com.github.ben-manes.caffeine:caffeine") optional("com.hazelcast:hazelcast") @@ -38,7 +40,9 @@ dependencies { optional("io.micrometer:micrometer-core") optional("io.micrometer:micrometer-jersey2") optional("io.micrometer:micrometer-registry-appoptics") - optional("io.micrometer:micrometer-registry-atlas") + optional("io.micrometer:micrometer-registry-atlas") { + exclude group: "javax.inject", module: "javax.inject" + } optional("io.micrometer:micrometer-registry-datadog") optional("io.micrometer:micrometer-registry-dynatrace") optional("io.micrometer:micrometer-registry-elastic") @@ -50,8 +54,13 @@ dependencies { optional("io.micrometer:micrometer-registry-kairos") optional("io.micrometer:micrometer-registry-new-relic") optional("io.micrometer:micrometer-registry-prometheus") - optional("io.micrometer:micrometer-registry-stackdriver") - optional("io.prometheus:simpleclient_pushgateway") + optional("io.micrometer:micrometer-registry-stackdriver") { + exclude group: "commons-logging", module: "commons-logging" + exclude group: "javax.annotation", module: "javax.annotation-api" + } + optional("io.prometheus:simpleclient_pushgateway") { + exclude group: "javax.xml.bind", module: "jaxb-api" + } optional("io.micrometer:micrometer-registry-signalfx") optional("io.micrometer:micrometer-registry-statsd") optional("io.micrometer:micrometer-registry-wavefront") @@ -59,28 +68,45 @@ dependencies { optional("io.r2dbc:r2dbc-pool") optional("io.r2dbc:r2dbc-spi") optional("jakarta.jms:jakarta.jms-api") + optional("jakarta.persistence:jakarta.persistence-api") optional("jakarta.servlet:jakarta.servlet-api") optional("javax.cache:cache-api") optional("net.sf.ehcache:ehcache") - optional("org.apache.activemq:activemq-broker") - optional("org.apache.commons:commons-dbcp2") + optional("org.apache.activemq:activemq-broker") { + exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_1.1_spec" + exclude group: "org.apache.geronimo.specs", module: "geronimo-j2ee-management_1.1_spec" + } + optional("org.apache.commons:commons-dbcp2") { + exclude group: "commons-logging", module: "commons-logging" + } optional("org.apache.kafka:kafka-clients") optional("org.apache.kafka:kafka-streams") optional("org.apache.tomcat.embed:tomcat-embed-core") optional("org.apache.tomcat.embed:tomcat-embed-el") optional("org.apache.tomcat:tomcat-jdbc") optional("org.aspectj:aspectjweaver") - optional("org.eclipse.jetty:jetty-server") + optional("org.eclipse.jetty:jetty-server") { + exclude group: "javax.servlet", module: "javax.servlet-api" + } optional("org.elasticsearch:elasticsearch") - optional("org.elasticsearch.client:elasticsearch-rest-client") + optional("org.elasticsearch.client:elasticsearch-rest-client") { + exclude group: "commons-logging", module: "commons-logging" + } optional("org.flywaydb:flyway-core") optional("org.glassfish.jersey.core:jersey-server") optional("org.glassfish.jersey.containers:jersey-container-servlet-core") - optional("org.hibernate:hibernate-core") + optional("org.hibernate:hibernate-core") { + exclude group: "javax.activation", module: "javax.activation-api" + exclude group: "javax.persistence", module: "javax.persistence-api" + exclude group: "javax.xml.bind", module: "jaxb-api" + exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec" + } optional("org.hibernate.validator:hibernate-validator") optional("org.influxdb:influxdb-java") optional("org.jolokia:jolokia-core") - optional("org.liquibase:liquibase-core") + optional("org.liquibase:liquibase-core") { + exclude group: "javax.xml.bind", module: "jaxb-api" + } optional("org.mongodb:mongodb-driver-reactivestreams") optional("org.mongodb:mongodb-driver-sync") optional("org.neo4j.driver:neo4j-java-driver") @@ -90,12 +116,16 @@ dependencies { optional("org.springframework:spring-webflux") optional("org.springframework:spring-webmvc") optional("org.springframework.amqp:spring-rabbit") - optional("org.springframework.data:spring-data-cassandra") + optional("org.springframework.data:spring-data-cassandra") { + exclude group: "org.slf4j", module: "jcl-over-slf4j" + } optional("org.springframework.data:spring-data-couchbase") optional("org.springframework.data:spring-data-ldap") optional("org.springframework.data:spring-data-mongodb") optional("org.springframework.data:spring-data-redis") - optional("org.springframework.data:spring-data-elasticsearch") + optional("org.springframework.data:spring-data-elasticsearch") { + exclude group: "commons-logging", module: "commons-logging" + } optional("org.springframework.data:spring-data-solr") optional("org.springframework.integration:spring-integration-core") optional("org.springframework.kafka:spring-kafka") @@ -112,15 +142,17 @@ dependencies { testImplementation("com.jayway.jsonpath:json-path") testImplementation("io.undertow:undertow-core") testImplementation("io.undertow:undertow-servlet") { - exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec" + exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.3_spec" exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_4.0_spec" } - testImplementation("javax.xml.bind:jaxb-api") + testImplementation("jakarta.xml.bind:jakarta.xml.bind-api") testImplementation("org.apache.logging.log4j:log4j-to-slf4j") testImplementation("org.aspectj:aspectjrt") testImplementation("org.assertj:assertj-core") testImplementation("org.awaitility:awaitility") - testImplementation("org.eclipse.jetty:jetty-webapp") + testImplementation("org.eclipse.jetty:jetty-webapp") { + exclude group: "javax.servlet", module: "javax.servlet-api" + } testImplementation("org.glassfish.jersey.ext:jersey-spring5") testImplementation("org.glassfish.jersey.media:jersey-media-json-jackson") testImplementation("org.hamcrest:hamcrest") @@ -130,16 +162,17 @@ dependencies { testImplementation("org.mockito:mockito-junit-jupiter") testImplementation("org.skyscreamer:jsonassert") testImplementation("org.springframework:spring-orm") - testImplementation("org.springframework.data:spring-data-elasticsearch") { - exclude group: "org.elasticsearch.client", module: "transport" - } testImplementation("org.springframework.data:spring-data-rest-webmvc") testImplementation("org.springframework.integration:spring-integration-jmx") - testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc") + testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc") { + exclude group: "javax.servlet", module: "javax.servlet-api" + } testImplementation("org.springframework.restdocs:spring-restdocs-webtestclient") testImplementation("org.springframework.security:spring-security-test") testImplementation("org.yaml:snakeyaml") + testRuntimeOnly("jakarta.management.j2ee:jakarta.management.j2ee-api") + testRuntimeOnly("jakarta.transaction:jakarta.transaction-api") testRuntimeOnly("org.springframework.security:spring-security-oauth2-jose") testRuntimeOnly("org.springframework.security:spring-security-oauth2-resource-server") testRuntimeOnly("org.springframework.security:spring-security-saml2-service-provider") diff --git a/spring-boot-project/spring-boot-actuator/build.gradle b/spring-boot-project/spring-boot-actuator/build.gradle index cf59e7fe45..09ec0a940b 100644 --- a/spring-boot-project/spring-boot-actuator/build.gradle +++ b/spring-boot-project/spring-boot-actuator/build.gradle @@ -11,7 +11,9 @@ description = "Spring Boot Actuator" dependencies { api(project(":spring-boot-project:spring-boot")) - optional("com.datastax.oss:java-driver-core") + optional("com.datastax.oss:java-driver-core") { + exclude group: "org.slf4j", module: "jcl-over-slf4j" + } optional("com.fasterxml.jackson.core:jackson-databind") optional("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") optional("com.github.ben-manes.caffeine:caffeine") @@ -22,28 +24,36 @@ dependencies { optional("io.lettuce:lettuce-core") optional("io.micrometer:micrometer-core") optional("io.micrometer:micrometer-registry-prometheus") - optional("io.prometheus:simpleclient_pushgateway") + optional("io.prometheus:simpleclient_pushgateway") { + exclude(group: "javax.xml.bind", module: "jaxb-api") + } optional("io.r2dbc:r2dbc-pool") optional("io.r2dbc:r2dbc-spi") optional("io.reactivex:rxjava-reactive-streams") - optional("org.elasticsearch.client:elasticsearch-rest-client") + optional("org.elasticsearch.client:elasticsearch-rest-client") { + exclude(group: "commons-logging", module: "commons-logging") + } optional("io.undertow:undertow-servlet") { - exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec" + exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.3_spec" exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_4.0_spec" } optional("javax.cache:cache-api") - optional("javax.jms:javax.jms-api") + optional("jakarta.jms:jakarta.jms-api") optional("net.sf.ehcache:ehcache") optional("org.apache.tomcat.embed:tomcat-embed-core") optional("org.aspectj:aspectjweaver") - optional("org.eclipse.jetty:jetty-server") + optional("org.eclipse.jetty:jetty-server") { + exclude(group: "javax.servlet", module: "javax.servlet-api") + } optional("org.elasticsearch:elasticsearch") optional("org.flywaydb:flyway-core") optional("org.glassfish.jersey.core:jersey-server") optional("org.glassfish.jersey.containers:jersey-container-servlet-core") optional("org.hibernate.validator:hibernate-validator") optional("org.influxdb:influxdb-java") - optional("org.liquibase:liquibase-core") + optional("org.liquibase:liquibase-core") { + exclude(group: "javax.xml.bind", module: "jaxb-api") + } optional("org.mongodb:mongodb-driver-reactivestreams") optional("org.mongodb:mongodb-driver-sync") optional("org.neo4j.driver:neo4j-java-driver") @@ -53,9 +63,13 @@ dependencies { optional("org.springframework:spring-web") optional("org.springframework:spring-webmvc") optional("org.springframework.amqp:spring-rabbit") - optional("org.springframework.data:spring-data-cassandra") + optional("org.springframework.data:spring-data-cassandra") { + exclude group: "org.slf4j", module: "jcl-over-slf4j" + } optional("org.springframework.data:spring-data-couchbase") - optional("org.springframework.data:spring-data-elasticsearch") + optional("org.springframework.data:spring-data-elasticsearch") { + exclude(group: "commons-logging", module: "commons-logging") + } optional("org.springframework.data:spring-data-ldap") optional("org.springframework.data:spring-data-mongodb") optional("org.springframework.data:spring-data-redis") @@ -86,7 +100,7 @@ dependencies { testImplementation("org.testcontainers:junit-jupiter") testRuntimeOnly("io.projectreactor.netty:reactor-netty-http") - testRuntimeOnly("javax.xml.bind:jaxb-api") + testRuntimeOnly("jakarta.xml.bind:jakarta.xml.bind-api") testRuntimeOnly("org.apache.tomcat.embed:tomcat-embed-el") testRuntimeOnly("org.glassfish.jersey.ext:jersey-spring5") testRuntimeOnly("org.hsqldb:hsqldb") diff --git a/spring-boot-project/spring-boot-autoconfigure/build.gradle b/spring-boot-project/spring-boot-autoconfigure/build.gradle index 7175bc57ee..4690904c51 100644 --- a/spring-boot-project/spring-boot-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-autoconfigure/build.gradle @@ -36,49 +36,81 @@ dependencies { optional("io.rsocket:rsocket-core") optional("io.rsocket:rsocket-transport-netty") optional("io.undertow:undertow-servlet") { - exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec" + exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.3_spec" exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_4.0_spec" } optional("io.undertow:undertow-websockets-jsr") { - exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec" + exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.3_spec" exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_4.0_spec" + exclude group: "org.jboss.spec.javax.websocket", module: "jboss-websocket-api_1.1_spec" } optional("jakarta.jms:jakarta.jms-api") optional("jakarta.mail:jakarta.mail-api") optional("jakarta.json.bind:jakarta.json.bind-api") optional("jakarta.persistence:jakarta.persistence-api") + optional("jakarta.transaction:jakarta.transaction-api") optional("jakarta.validation:jakarta.validation-api") optional("jakarta.ws.rs:jakarta.ws.rs-api") optional("javax.cache:cache-api") optional("javax.money:money-api") optional("net.sf.ehcache:ehcache") - optional("org.apache.activemq:activemq-broker") - optional("org.apache.activemq:artemis-jms-client") - optional("org.apache.activemq:artemis-jms-server") - optional("org.apache.commons:commons-dbcp2") + optional("org.apache.activemq:activemq-broker") { + exclude group: "org.apache.geronimo.specs", module: "geronimo-j2ee-management_1.1_spec" + exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_1.1_spec" + } + optional("org.apache.activemq:artemis-jms-client") { + exclude group: "commons-logging", module: "commons-logging" + exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_2.0_spec" + exclude group: "org.apache.geronimo.specs", module: "geronimo-json_1.0_spec" + } + optional("org.apache.activemq:artemis-jms-server") { + exclude group: "commons-logging", module: "commons-logging" + exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_2.0_spec" + exclude group: "org.apache.geronimo.specs", module: "geronimo-json_1.0_spec" + exclude group: "org.apache.geronimo.specs", module: "geronimo-jta_1.1_spec" + } + optional("org.apache.commons:commons-dbcp2") { + exclude group: "commons-logging", module: "commons-logging" + } optional("org.apache.kafka:kafka-streams") - optional("org.apache.solr:solr-solrj") + optional("org.apache.solr:solr-solrj") { + exclude group: "org.slf4j", module: "jcl-over-slf4j" + } optional("org.apache.tomcat.embed:tomcat-embed-core") optional("org.apache.tomcat.embed:tomcat-embed-el") optional("org.apache.tomcat.embed:tomcat-embed-websocket") optional("org.apache.tomcat:tomcat-jdbc") - optional("org.codehaus.btm:btm") + optional("org.codehaus.btm:btm") { + exclude group: "javax.transaction", module: "jta" + } optional("org.codehaus.groovy:groovy-templates") optional("com.github.ben-manes.caffeine:caffeine") optional("com.github.mxab.thymeleaf.extras:thymeleaf-extras-data-attribute") - optional("com.sendgrid:sendgrid-java") + optional("com.sendgrid:sendgrid-java") { + exclude group: "commons-logging", module: "commons-logging" + } optional("com.unboundid:unboundid-ldapsdk") optional("com.zaxxer:HikariCP") optional("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect") optional("org.aspectj:aspectjweaver") - optional("org.eclipse.jetty:jetty-webapp") + optional("org.eclipse.jetty:jetty-webapp") { + exclude group: "javax.servlet", module: "javax.servlet-api" + } optional("org.eclipse.jetty:jetty-reactive-httpclient") - optional("org.eclipse.jetty.websocket:javax-websocket-server-impl") { - exclude(group: "org.eclipse.jetty", module: "jetty-jndi") + optional("org.eclipse.jetty.websocket:javax-websocket-server-impl") { + exclude group: "javax.annotation", module: "javax.annotation-api" + exclude group: "javax.servlet", module: "javax.servlet-api" + exclude group: "javax.websocket", module: "javax.websocket-api" + exclude group: "javax.websocket", module: "javax.websocket-client-api" + exclude group: "org.eclipse.jetty", module: "jetty-jndi" } optional("org.ehcache:ehcache") - optional("org.elasticsearch.client:elasticsearch-rest-client") - optional("org.elasticsearch.client:elasticsearch-rest-high-level-client") + optional("org.elasticsearch.client:elasticsearch-rest-client") { + exclude group: "commons-logging", module: "commons-logging" + } + optional("org.elasticsearch.client:elasticsearch-rest-high-level-client") { + exclude group: "commons-logging", module: "commons-logging" + } optional("org.flywaydb:flyway-core") optional("org.freemarker:freemarker") optional("org.glassfish.jersey.core:jersey-server") @@ -86,16 +118,36 @@ dependencies { optional("org.glassfish.jersey.containers:jersey-container-servlet") optional("org.glassfish.jersey.ext:jersey-spring5") optional("org.glassfish.jersey.media:jersey-media-json-jackson") - optional("org.hibernate:hibernate-core") - optional("org.hibernate:hibernate-jcache") + optional("org.hibernate:hibernate-core") { + exclude group: "javax.activation", module: "javax.activation-api" + exclude group: "javax.persistence", module: "javax.persistence-api" + exclude group: "javax.xml.bind", module: "jaxb-api" + exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec" + } + optional("org.hibernate:hibernate-jcache") { + exclude group: "javax.activation", module: "javax.activation-api" + exclude group: "javax.persistence", module: "javax.persistence-api" + exclude group: "javax.xml.bind", module: "jaxb-api" + exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec" + } optional("org.hibernate.validator:hibernate-validator") optional("org.infinispan:infinispan-component-annotations") - optional("org.infinispan:infinispan-jcache") - optional("org.infinispan:infinispan-spring5-embedded") + optional("org.infinispan:infinispan-jcache") { + exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec" + } + optional("org.infinispan:infinispan-spring5-embedded") { + exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec" + } optional("org.influxdb:influxdb-java") - optional("org.jooq:jooq") - optional("org.liquibase:liquibase-core") - optional("org.messaginghub:pooled-jms") + optional("org.jooq:jooq") { + exclude group: "javax.xml.bind", module: "jaxb-api" + } + optional("org.liquibase:liquibase-core") { + exclude group: "javax.xml.bind", module: "jaxb-api" + } + optional("org.messaginghub:pooled-jms") { + exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_2.0_spec" + } optional("org.mongodb:mongodb-driver-reactivestreams") optional("org.mongodb:mongodb-driver-sync") optional("org.quartz-scheduler:quartz") @@ -115,7 +167,9 @@ dependencies { optional("org.springframework.data:spring-data-couchbase") optional("org.springframework.data:spring-data-jpa") optional("org.springframework.data:spring-data-rest-webmvc") - optional("org.springframework.data:spring-data-cassandra") + optional("org.springframework.data:spring-data-cassandra") { + exclude group: "org.slf4j", module: "jcl-over-slf4j" + } optional("org.springframework.data:spring-data-elasticsearch") { exclude group: "org.elasticsearch.client", module: "transport" } @@ -129,7 +183,9 @@ dependencies { optional("org.springframework.hateoas:spring-hateoas") optional("org.springframework.security:spring-security-acl") optional("org.springframework.security:spring-security-config") - optional("org.springframework.security:spring-security-data") + optional("org.springframework.security:spring-security-data") { + exclude group: "javax.xml.bind", module: "jaxb-api" + } optional("org.springframework.security:spring-security-oauth2-client") optional("org.springframework.security:spring-security-oauth2-jose") optional("org.springframework.security:spring-security-oauth2-resource-server") @@ -139,7 +195,9 @@ dependencies { optional("org.springframework.session:spring-session-core") optional("org.springframework.session:spring-session-data-mongodb") optional("org.springframework.session:spring-session-data-redis") - optional("org.springframework.session:spring-session-hazelcast") + optional("org.springframework.session:spring-session-hazelcast") { + exclude group: "javax.annotation", module: "javax.annotation-api" + } optional("org.springframework.session:spring-session-jdbc") optional("org.springframework.amqp:spring-rabbit") optional("org.springframework.kafka:spring-kafka") @@ -187,5 +245,6 @@ dependencies { testImplementation("org.testcontainers:testcontainers") testImplementation("org.yaml:snakeyaml") + testRuntimeOnly("jakarta.management.j2ee:jakarta.management.j2ee-api") testRuntimeOnly("org.jetbrains.kotlin:kotlin-reflect") } diff --git a/spring-boot-project/spring-boot-cli/build.gradle b/spring-boot-project/spring-boot-cli/build.gradle index 0651a3264f..f6aba3162d 100644 --- a/spring-boot-project/spring-boot-cli/build.gradle +++ b/spring-boot-project/spring-boot-cli/build.gradle @@ -35,13 +35,16 @@ dependencies { implementation("org.apache.maven:maven-model") implementation("org.apache.maven:maven-resolver-provider") { exclude group: "com.google.guava", module: "guava" + exclude group: "javax.inject", module: "javax.inject" } implementation("org.apache.maven.resolver:maven-resolver-connector-basic") implementation("org.apache.maven.resolver:maven-resolver-transport-file") implementation("org.apache.maven.resolver:maven-resolver-transport-http") { exclude group: "org.slf4j", module: "jcl-over-slf4j" } - implementation("org.apache.maven:maven-settings-builder") + implementation("org.apache.maven:maven-settings-builder") { + exclude group: "javax.inject", module: "javax.inject" + } implementation("org.codehaus.groovy:groovy") implementation("org.slf4j:slf4j-simple") implementation("org.sonatype.plexus:plexus-sec-dispatcher") diff --git a/spring-boot-project/spring-boot-devtools/build.gradle b/spring-boot-project/spring-boot-devtools/build.gradle index 8befce0b92..cd350b5c8f 100644 --- a/spring-boot-project/spring-boot-devtools/build.gradle +++ b/spring-boot-project/spring-boot-devtools/build.gradle @@ -24,7 +24,9 @@ dependencies { intTestImplementation(project(":spring-boot-project:spring-boot-autoconfigure")) intTestImplementation(project(":spring-boot-project:spring-boot-test")) intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) - intTestImplementation("org.apache.httpcomponents:httpclient") + intTestImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } intTestImplementation("org.assertj:assertj-core") intTestImplementation("org.awaitility:awaitility") intTestImplementation("org.junit.jupiter:junit-jupiter") @@ -32,9 +34,15 @@ dependencies { intTestRuntimeOnly("org.springframework:spring-web") - optional("javax.servlet:javax.servlet-api") + optional("jakarta.persistence:jakarta.persistence-api") + optional("jakarta.servlet:jakarta.servlet-api") optional("org.apache.derby:derby") - optional("org.hibernate:hibernate-core") + optional("org.hibernate:hibernate-core") { + exclude group: "javax.activation", module:"javax.activation-api" + exclude group: "javax.persistence", module:"javax.persistence-api" + exclude group: "javax.xml.bind", module:"jaxb-api" + exclude group: "org.jboss.spec.javax.transaction", module:"jboss-transaction-api_1.2_spec" + } optional("org.springframework:spring-jdbc") optional("org.springframework:spring-orm") optional("org.springframework:spring-web") diff --git a/spring-boot-project/spring-boot-docs/build.gradle b/spring-boot-project/spring-boot-docs/build.gradle index cabd98225e..8460d0b349 100644 --- a/spring-boot-project/spring-boot-docs/build.gradle +++ b/spring-boot-project/spring-boot-docs/build.gradle @@ -69,13 +69,21 @@ dependencies { implementation("io.micrometer:micrometer-core") implementation("io.projectreactor.netty:reactor-netty-http") implementation("io.undertow:undertow-core") + implementation("jakarta.persistence:jakarta.persistence-api") implementation("jakarta.servlet:jakarta.servlet-api") - implementation("org.apache.commons:commons-dbcp2") + implementation("org.apache.commons:commons-dbcp2") { + exclude group: "commons-logging", module: "commons-logging" + } implementation("org.apache.kafka:kafka-streams") implementation("org.apache.tomcat.embed:tomcat-embed-core") implementation("org.assertj:assertj-core") implementation("org.glassfish.jersey.core:jersey-server") - implementation("org.hibernate:hibernate-jcache") + implementation("org.hibernate:hibernate-jcache") { + exclude group: "javax.activation", module: "javax.activation-api" + exclude group: "javax.persistence", module: "javax.persistence-api" + exclude group: "javax.xml.bind", module: "jaxb-api" + exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec" + } implementation("org.springframework:spring-orm") implementation("org.springframework:spring-test") implementation("org.springframework:spring-web") @@ -85,7 +93,11 @@ dependencies { implementation("org.springframework.data:spring-data-redis") implementation("org.springframework.data:spring-data-r2dbc") implementation("org.springframework.kafka:spring-kafka") - implementation("org.springframework.restdocs:spring-restdocs-restassured") + implementation("org.springframework.restdocs:spring-restdocs-restassured") { + exclude group: "commons-logging", module: "commons-logging" + exclude group: "javax.activation", module: "activation" + exclude group: "javax.xml.bind", module: "jaxb-api" + } implementation("org.springframework.restdocs:spring-restdocs-webtestclient") implementation("org.springframework.security:spring-security-config") implementation("org.springframework.security:spring-security-web") diff --git a/spring-boot-project/spring-boot-parent/build.gradle b/spring-boot-project/spring-boot-parent/build.gradle index a132ec9137..1c15b97617 100644 --- a/spring-boot-project/spring-boot-parent/build.gradle +++ b/spring-boot-project/spring-boot-parent/build.gradle @@ -34,6 +34,13 @@ bom { ] } } + library("Jakarta Inject", "1.0.5") { + group("jakarta.inject") { + modules = [ + "jakarta.inject-api" + ] + } + } library("JLine", "2.11") { prohibit("[2.12,)") { because "it contains breaking changes" diff --git a/spring-boot-project/spring-boot-test-autoconfigure/build.gradle b/spring-boot-project/spring-boot-test-autoconfigure/build.gradle index 81dcca7f20..cf2508f877 100644 --- a/spring-boot-project/spring-boot-test-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-test-autoconfigure/build.gradle @@ -12,25 +12,42 @@ dependencies { api(project(":spring-boot-project:spring-boot-test")) api(project(":spring-boot-project:spring-boot-autoconfigure")) - optional("javax.json.bind:javax.json.bind-api") - optional("javax.servlet:javax.servlet-api") - optional("javax.transaction:javax.transaction-api") + optional("jakarta.json.bind:jakarta.json.bind-api") + optional("jakarta.persistence:jakarta.persistence-api") + optional("jakarta.servlet:jakarta.servlet-api") + optional("jakarta.transaction:jakarta.transaction-api") optional("com.fasterxml.jackson.core:jackson-databind") optional("com.google.code.gson:gson") optional("com.jayway.jsonpath:json-path") optional("com.sun.xml.messaging.saaj:saaj-impl") - optional("io.rest-assured:rest-assured") - optional("net.sourceforge.htmlunit:htmlunit") - optional("org.hibernate:hibernate-core") + optional("io.rest-assured:rest-assured") { + exclude group: "commons-logging", module: "commons-logging" + exclude group: "javax.activation", module: "activation" + exclude group: "javax.xml.bind", module: "jaxb-api" + } + optional("net.sourceforge.htmlunit:htmlunit") { + exclude group: "commons-logging", module: "commons-logging" + } + optional("org.hibernate:hibernate-core") { + exclude group: "commons-logging", module: "commons-logging" + exclude group: "javax.activation", module: "javax.activation-api" + exclude group: "javax.persistence", module: "javax.persistence-api" + exclude group: "javax.xml.bind", module: "jaxb-api" + exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec" + } optional("org.junit.jupiter:junit-jupiter-api") - optional("org.seleniumhq.selenium:htmlunit-driver") + optional("org.seleniumhq.selenium:htmlunit-driver") { + exclude group: "commons-logging", module: "commons-logging" + } optional("org.seleniumhq.selenium:selenium-api") optional("org.springframework:spring-orm") optional("org.springframework:spring-test") optional("org.springframework:spring-web") optional("org.springframework:spring-webmvc") optional("org.springframework:spring-webflux") - optional("org.springframework.data:spring-data-cassandra") + optional("org.springframework.data:spring-data-cassandra") { + exclude group: "org.slf4j", module: "jcl-over-slf4j" + } optional("org.springframework.data:spring-data-jdbc") optional("org.springframework.data:spring-data-jpa") optional("org.springframework.data:spring-data-ldap") @@ -38,8 +55,14 @@ dependencies { optional("org.springframework.data:spring-data-neo4j") optional("org.springframework.data:spring-data-r2dbc") optional("org.springframework.data:spring-data-redis") - optional("org.springframework.restdocs:spring-restdocs-mockmvc") - optional("org.springframework.restdocs:spring-restdocs-restassured") + optional("org.springframework.restdocs:spring-restdocs-mockmvc") { + exclude group: "javax.servlet", module: "javax.servlet-api" + } + optional("org.springframework.restdocs:spring-restdocs-restassured") { + exclude group: "commons-logging", module: "commons-logging" + exclude group: "javax.activation", module: "activation" + exclude group: "javax.xml.bind", module: "jaxb-api" + } optional("org.springframework.restdocs:spring-restdocs-webtestclient") optional("org.springframework.security:spring-security-config") optional("org.springframework.security:spring-security-test") @@ -61,7 +84,7 @@ dependencies { testImplementation("io.projectreactor:reactor-core") testImplementation("io.projectreactor:reactor-test") testImplementation("io.r2dbc:r2dbc-h2") - testImplementation("javax.json:javax.json-api") + testImplementation("jakarta.json:jakarta.json-api") testImplementation("org.apache.commons:commons-pool2") testImplementation("org.apache.johnzon:johnzon-jsonb") testImplementation("org.apache.tomcat.embed:tomcat-embed-el") @@ -71,7 +94,9 @@ dependencies { testImplementation("org.awaitility:awaitility") testImplementation("org.hibernate.validator:hibernate-validator") testImplementation("org.hsqldb:hsqldb") - testImplementation("org.jooq:jooq") + testImplementation("org.jooq:jooq") { + exclude group: "javax.xml.bind", module: "jaxb-api" + } testImplementation("org.junit.jupiter:junit-jupiter") testImplementation("org.junit.platform:junit-platform-engine") testImplementation("org.junit.platform:junit-platform-launcher") diff --git a/spring-boot-project/spring-boot-test/build.gradle b/spring-boot-project/spring-boot-test/build.gradle index 2096486a84..7571c2b34f 100644 --- a/spring-boot-project/spring-boot-test/build.gradle +++ b/spring-boot-project/spring-boot-test/build.gradle @@ -15,10 +15,12 @@ dependencies { optional("com.google.code.gson:gson") optional("com.jayway.jsonpath:json-path") optional("io.projectreactor.netty:reactor-netty-http") - optional("javax.json.bind:javax.json.bind-api") - optional("javax.servlet:javax.servlet-api") + optional("jakarta.json.bind:jakarta.json.bind-api") + optional("jakarta.servlet:jakarta.servlet-api") optional("junit:junit") - optional("org.apache.httpcomponents:httpclient") + optional("org.apache.httpcomponents:httpclient") { + exclude(group: "commons-logging", module: "commons-logging") + } optional("org.assertj:assertj-core") optional("org.hamcrest:hamcrest-core") optional("org.hamcrest:hamcrest-library") @@ -27,16 +29,20 @@ dependencies { optional("org.junit.jupiter:junit-jupiter-api") optional("org.mockito:mockito-core") optional("org.skyscreamer:jsonassert") - optional("org.seleniumhq.selenium:htmlunit-driver") + optional("org.seleniumhq.selenium:htmlunit-driver") { + exclude(group: "commons-logging", module: "commons-logging") + } optional("org.seleniumhq.selenium:selenium-api") optional("org.springframework:spring-test") optional("org.springframework:spring-web") optional("org.springframework:spring-webflux") - optional("net.sourceforge.htmlunit:htmlunit") + optional("net.sourceforge.htmlunit:htmlunit") { + exclude(group: "commons-logging", module: "commons-logging") + } testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) testImplementation("io.mockk:mockk") - testImplementation("javax.json:javax.json-api") + testImplementation("jakarta.json:jakarta.json-api") testImplementation("ch.qos.logback:logback-classic") testImplementation("org.apache.tomcat.embed:tomcat-embed-core") testImplementation("org.codehaus.groovy:groovy") diff --git a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/build.gradle index 56a9bc7717..392f49f8ed 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-buildpack-platform/build.gradle @@ -11,7 +11,9 @@ dependencies { api("com.fasterxml.jackson.module:jackson-module-parameter-names") api("net.java.dev.jna:jna-platform") api("org.apache.commons:commons-compress:1.19") - api("org.apache.httpcomponents:httpclient") + api("org.apache.httpcomponents:httpclient") { + exclude(group: "commons-logging", module: "commons-logging") + } api("org.springframework:spring-core") testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) diff --git a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/build.gradle index bcd85c1ece..684cae0a34 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-configuration-processor/build.gradle @@ -19,7 +19,7 @@ dependencies { testCompileOnly("com.google.code.findbugs:jsr305:3.0.2") testImplementation(enforcedPlatform(project(":spring-boot-project:spring-boot-dependencies"))) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) - testImplementation("javax.validation:validation-api") + testImplementation("jakarta.validation:jakarta.validation-api") testImplementation("org.assertj:assertj-core") testImplementation("org.hamcrest:hamcrest-library") testImplementation("org.junit.jupiter:junit-jupiter") diff --git a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle index f9bca24c68..578667ce63 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle @@ -27,7 +27,9 @@ dependencies { implementation("org.apache.commons:commons-compress") implementation("org.springframework:spring-core") - optional("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") + optional("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") { + exclude(group: "commons-logging", module: "commons-logging") + } testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) testImplementation("org.assertj:assertj-core") diff --git a/spring-boot-project/spring-boot-tools/spring-boot-loader/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-loader/build.gradle index fa85d4849c..1a03bb4eda 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-loader/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-loader/build.gradle @@ -18,6 +18,5 @@ dependencies { testRuntimeOnly("ch.qos.logback:logback-classic") testRuntimeOnly("org.bouncycastle:bcprov-jdk16:1.46") - testRuntimeOnly("org.slf4j:jcl-over-slf4j") testRuntimeOnly("org.springframework:spring-webmvc") } \ No newline at end of file diff --git a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/build.gradle index ec9f84ee78..942127b2a5 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-maven-plugin/build.gradle @@ -21,8 +21,14 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-buildpack-platform")) implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools")) - implementation("org.apache.maven.shared:maven-common-artifact-filters") - implementation("org.apache.maven:maven-plugin-api") + implementation("org.apache.maven.shared:maven-common-artifact-filters") { + exclude(group: "javax.enterprise", module: "cdi-api") + exclude(group: "javax.inject", module: "javax.inject") + } + implementation("org.apache.maven:maven-plugin-api") { + exclude(group: "javax.enterprise", module: "cdi-api") + exclude(group: "javax.inject", module: "javax.inject") + } intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-buildpack-platform")) intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools")) @@ -33,7 +39,10 @@ dependencies { intTestImplementation("org.testcontainers:testcontainers") intTestImplementation("org.testcontainers:junit-jupiter") - mavenOptionalImplementation("org.apache.maven.plugins:maven-shade-plugin") + mavenOptionalImplementation("org.apache.maven.plugins:maven-shade-plugin") { + exclude(group: "javax.enterprise", module: "cdi-api") + exclude(group: "javax.inject", module: "javax.inject") + } runtimeOnly("org.sonatype.plexus:plexus-build-api") diff --git a/spring-boot-project/spring-boot-tools/spring-boot-test-support/build.gradle b/spring-boot-project/spring-boot-tools/spring-boot-test-support/build.gradle index 05c762da7e..a185547f10 100644 --- a/spring-boot-project/spring-boot-tools/spring-boot-test-support/build.gradle +++ b/spring-boot-project/spring-boot-tools/spring-boot-test-support/build.gradle @@ -8,8 +8,10 @@ description = "Spring Boot Testing Support" dependencies { api(platform(project(path: ":spring-boot-project:spring-boot-parent"))) - compileOnly("com.datastax.oss:java-driver-core") - compileOnly("javax.servlet:javax.servlet-api") + compileOnly("com.datastax.oss:java-driver-core") { + exclude(group: "org.slf4j", module: "jcl-over-slf4j") + } + compileOnly("jakarta.servlet:jakarta.servlet-api") compileOnly("junit:junit") compileOnly("org.elasticsearch:elasticsearch") compileOnly("org.junit.jupiter:junit-jupiter") @@ -21,9 +23,12 @@ dependencies { compileOnly("org.testcontainers:cassandra") compileOnly("org.testcontainers:testcontainers") + implementation("jakarta.inject:jakarta.inject-api") implementation("org.apache.maven.resolver:maven-resolver-connector-basic") implementation("org.apache.maven.resolver:maven-resolver-impl") - implementation("org.apache.maven:maven-resolver-provider") + implementation("org.apache.maven:maven-resolver-provider") { + exclude(group: "javax.inject", module: "javax.inject") + } implementation("org.apache.maven.resolver:maven-resolver-transport-http") { exclude group: "org.slf4j", module: "jcl-over-slf4j" } @@ -33,7 +38,7 @@ dependencies { implementation("org.springframework:spring-core") implementation("org.springframework:spring-test") - testImplementation("javax.servlet:javax.servlet-api") + testImplementation("jakarta.servlet:jakarta.servlet-api") testImplementation("org.junit.jupiter:junit-jupiter") testImplementation("org.springframework:spring-context") diff --git a/spring-boot-project/spring-boot/build.gradle b/spring-boot-project/spring-boot/build.gradle index df094c0d53..3d2df0f957 100644 --- a/spring-boot-project/spring-boot/build.gradle +++ b/spring-boot-project/spring-boot/build.gradle @@ -36,32 +36,52 @@ dependencies { optional("io.rsocket:rsocket-core") optional("io.rsocket:rsocket-transport-netty") optional("io.undertow:undertow-servlet") { - exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec" + exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.3_spec" exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_4.0_spec" } - optional("javax.jms:javax.jms-api") - optional("javax.servlet:javax.servlet-api") + optional("jakarta.jms:jakarta.jms-api") + optional("jakarta.servlet:jakarta.servlet-api") + optional("jakarta.transaction:jakarta.transaction-api") optional("junit:junit") - optional("org.apache.commons:commons-dbcp2") - optional("org.apache.httpcomponents:httpclient") + optional("org.apache.commons:commons-dbcp2") { + exclude(group: "commons-logging", module: "commons-logging") + } + optional("org.apache.httpcomponents:httpclient") { + exclude(group: "commons-logging", module: "commons-logging") + } optional("org.apache.logging.log4j:log4j-api") optional("org.apache.logging.log4j:log4j-core") optional("org.apache.tomcat.embed:tomcat-embed-core") optional("org.apache.tomcat.embed:tomcat-embed-jasper") optional("org.apache.tomcat:tomcat-jdbc") optional("org.assertj:assertj-core") - optional("org.codehaus.btm:btm") + optional("org.codehaus.btm:btm") { + exclude(group: "javax.transaction", module: "jta") + } optional("org.codehaus.groovy:groovy") optional("org.codehaus.groovy:groovy-xml") optional("org.eclipse.jetty:jetty-servlets") optional("org.eclipse.jetty:jetty-util") - optional("org.eclipse.jetty:jetty-webapp") - optional("org.eclipse.jetty:jetty-alpn-conscrypt-server") - optional("org.eclipse.jetty.http2:http2-server") + optional("org.eclipse.jetty:jetty-webapp") { + exclude(group: "javax.servlet", module: "javax.servlet-api") + } + optional("org.eclipse.jetty:jetty-alpn-conscrypt-server") { + exclude(group: "javax.servlet", module: "javax.servlet-api") + } + optional("org.eclipse.jetty.http2:http2-server") { + exclude(group: "javax.servlet", module: "javax.servlet-api") + } optional("org.hamcrest:hamcrest-library") - optional("org.hibernate:hibernate-core") + optional("org.hibernate:hibernate-core") { + exclude(group: "javax.activation", module: "javax.activation-api") + exclude(group: "javax.persistence", module: "javax.persistence-api") + exclude(group: "javax.xml.bind", module: "jaxb-api") + exclude(group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec") + } optional("org.hibernate.validator:hibernate-validator") - optional("org.liquibase:liquibase-core") + optional("org.liquibase:liquibase-core") { + exclude(group: "javax.xml.bind", module: "jaxb-api") + } optional("org.slf4j:jul-to-slf4j") optional("org.slf4j:slf4j-api") optional("org.springframework:spring-messaging") @@ -78,7 +98,9 @@ dependencies { optional("org.jetbrains.kotlin:kotlin-stdlib") testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) - testImplementation("com.google.appengine:appengine-api-1.0-sdk") + testImplementation("com.google.appengine:appengine-api-1.0-sdk") { + exclude group: "javax.inject", module: "javax.inject" + } testImplementation("com.h2database:h2") testImplementation("com.ibm.db2:jcc") testImplementation("com.jayway.jsonpath:json-path") @@ -87,13 +109,18 @@ dependencies { testImplementation("com.squareup.okhttp3:okhttp") testImplementation("com.sun.xml.messaging.saaj:saaj-impl") testImplementation("io.projectreactor:reactor-test") - testImplementation("javax.xml.ws:jaxws-api") + testImplementation("jakarta.persistence:jakarta.persistence-api") + testImplementation("jakarta.xml.ws:jakarta.xml.ws-api") testImplementation("mysql:mysql-connector-java") testImplementation("net.sourceforge.jtds:jtds") testImplementation("org.apache.derby:derby") - testImplementation("org.apache.httpcomponents:httpasyncclient") + testImplementation("org.apache.httpcomponents:httpasyncclient") { + exclude group: "commons-logging", module: "commons-logging" + } testImplementation("org.awaitility:awaitility") - testImplementation("org.firebirdsql.jdbc:jaybird-jdk18") + testImplementation("org.firebirdsql.jdbc:jaybird-jdk18") { + exclude group: "javax.resource", module: "connector-api" + } testImplementation("org.hsqldb:hsqldb") testImplementation("org.junit.jupiter:junit-jupiter") testImplementation("org.mariadb.jdbc:mariadb-java-client") diff --git a/spring-boot-tests/spring-boot-deployment-tests/build.gradle b/spring-boot-tests/spring-boot-deployment-tests/build.gradle index 150b8dc29e..588b8eb486 100644 --- a/spring-boot-tests/spring-boot-deployment-tests/build.gradle +++ b/spring-boot-tests/spring-boot-deployment-tests/build.gradle @@ -21,7 +21,9 @@ dependencies { intTestImplementation(enforcedPlatform(project(path: ":spring-boot-project:spring-boot-parent"))) intTestImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) - intTestImplementation("org.apache.httpcomponents:httpasyncclient") + intTestImplementation("org.apache.httpcomponents:httpasyncclient") { + exclude group: "commons-logging", module: "commons-logging" + } intTestImplementation("org.awaitility:awaitility") intTestImplementation("org.testcontainers:junit-jupiter") intTestImplementation("org.testcontainers:testcontainers") diff --git a/spring-boot-tests/spring-boot-integration-tests/spring-boot-server-tests/build.gradle b/spring-boot-tests/spring-boot-integration-tests/spring-boot-server-tests/build.gradle index f04fa853a1..d3ca40b887 100644 --- a/spring-boot-tests/spring-boot-integration-tests/spring-boot-server-tests/build.gradle +++ b/spring-boot-tests/spring-boot-integration-tests/spring-boot-server-tests/build.gradle @@ -17,7 +17,9 @@ configurations { dependencies { intTestImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) - intTestImplementation("org.apache.httpcomponents:httpasyncclient") + intTestImplementation("org.apache.httpcomponents:httpasyncclient") { + exclude group: "commons-logging", module: "commons-logging" + } intTestImplementation("org.awaitility:awaitility") intTestImplementation("org.springframework:spring-web") diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/build.gradle index 1d627427fc..73e8a80d6e 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator-custom-security/build.gradle @@ -15,5 +15,7 @@ dependencies { testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testRuntimeOnly("org.apache.httpcomponents:httpclient") + testRuntimeOnly("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } \ No newline at end of file diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/build.gradle index 2e151b5fd0..1f875cc8de 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-actuator/build.gradle @@ -15,5 +15,7 @@ dependencies { runtimeOnly("com.h2database:h2") testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testRuntimeOnly("org.apache.httpcomponents:httpclient") + testRuntimeOnly("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } \ No newline at end of file diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/build.gradle index f07ff09b97..c37dac862e 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-data-r2dbc-liquibase/build.gradle @@ -9,7 +9,10 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-r2dbc")) runtimeOnly("io.r2dbc:r2dbc-postgresql") - runtimeOnly("org.liquibase:liquibase-core") + runtimeOnly("org.liquibase:liquibase-core") { + exclude group: "javax.activation", module: "javax.activation-api" + exclude group: "javax.xml.bind", module: "jaxb-api" + } runtimeOnly("org.postgresql:postgresql") runtimeOnly("org.springframework:spring-jdbc") diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jetty-jsp/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jetty-jsp/build.gradle index 5e16488338..9706eb1384 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jetty-jsp/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jetty-jsp/build.gradle @@ -21,9 +21,10 @@ dependencies { providedRuntime("org.eclipse.jetty:apache-jsp") { exclude group: "javax.annotation", module: "javax.annotation-api" + exclude group: "javax.servlet", module: "javax.servlet-api" } - runtimeOnly("javax.servlet:jstl") + runtimeOnly("org.glassfish.web:jakarta.servlet.jsp.jstl") testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-jetty")) diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jetty-ssl/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jetty-ssl/build.gradle index b39afaf3ed..5933f83271 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jetty-ssl/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jetty-ssl/build.gradle @@ -13,5 +13,7 @@ dependencies { testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testRuntimeOnly("org.apache.httpcomponents:httpclient") + testRuntimeOnly("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jpa/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jpa/build.gradle index f571bc0c59..2168014f55 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jpa/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jpa/build.gradle @@ -16,10 +16,12 @@ dependencies { exclude group: "javax.activation", module: "javax.activation-api" exclude group: "javax.persistence", module: "javax.persistence-api" exclude group: "javax.xml.bind", module: "jaxb-api" + exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec" } implementation("org.springframework:spring-orm") runtimeOnly("com.h2database:h2") + runtimeOnly("jakarta.transaction:jakarta.transaction-api") testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jta-atomikos/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jta-atomikos/build.gradle index 6a67d0e624..5f8555d582 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jta-atomikos/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jta-atomikos/build.gradle @@ -17,7 +17,10 @@ dependencies { runtimeOnly("com.h2database:h2") runtimeOnly("org.apache.activemq:artemis-jms-server") { + exclude group: "commons-logging", module: "commons-logging" exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_2.0_spec" + exclude group: "org.apache.geronimo.specs", module: "geronimo-json_1.0_spec" + exclude group: "org.apache.geronimo.specs", module: "geronimo-jta_1.1_spec" } testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jta-bitronix/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jta-bitronix/build.gradle index d14f51108e..2ededcb8a9 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jta-bitronix/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-jta-bitronix/build.gradle @@ -17,7 +17,10 @@ dependencies { runtimeOnly("com.h2database:h2") runtimeOnly("org.apache.activemq:artemis-jms-server") { + exclude group: "commons-logging", module: "commons-logging" exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_2.0_spec" + exclude group: "org.apache.geronimo.specs", module: "geronimo-json_1.0_spec" + exclude group: "org.apache.geronimo.specs", module: "geronimo-jta_1.1_spec" } testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/build.gradle index 60ab8957b5..de2548df6e 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-liquibase/build.gradle @@ -9,7 +9,13 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-actuator")) implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-jdbc")) implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) - implementation("org.liquibase:liquibase-core") + if (JavaVersion.current().java9Compatible) { + implementation("jakarta.xml.bind:jakarta.xml.bind-api") + } + implementation("org.liquibase:liquibase-core") { + exclude group: "javax.activation", module: "javax.activation-api" + exclude group: "javax.xml.bind", module: "jaxb-api" + } runtimeOnly("com.h2database:h2") diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-oauth2-client/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-oauth2-client/build.gradle index 9667845a0c..d45c28a711 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-oauth2-client/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-oauth2-client/build.gradle @@ -10,5 +10,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-reactive-oauth2-client/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-reactive-oauth2-client/build.gradle index 890f428868..6c2ed59524 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-reactive-oauth2-client/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-reactive-oauth2-client/build.gradle @@ -11,5 +11,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-webflux")) testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle index 2d2b2b9a50..c67dfd4f9c 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-test/build.gradle @@ -12,9 +12,12 @@ dependencies { runtimeOnly("com.h2database:h2") testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testImplementation("net.sourceforge.htmlunit:htmlunit") + testImplementation("net.sourceforge.htmlunit:htmlunit") { + exclude group: "commons-logging", module: "commons-logging" + } testImplementation("org.mockito:mockito-junit-jupiter") testImplementation("org.seleniumhq.selenium:selenium-api") - testImplementation("org.seleniumhq.selenium:htmlunit-driver") - testImplementation("net.sourceforge.htmlunit:htmlunit") + testImplementation("org.seleniumhq.selenium:htmlunit-driver") { + exclude group: "commons-logging", module: "commons-logging" + } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-jsp/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-jsp/build.gradle index edfd6c56f8..caff9a9f00 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-jsp/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-jsp/build.gradle @@ -15,7 +15,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) providedRuntime(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-tomcat")) - providedRuntime("javax.servlet:jstl") + providedRuntime("org.glassfish.web:jakarta.servlet.jsp.jstl") providedRuntime("org.apache.tomcat.embed:tomcat-embed-jasper") testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-multi-connectors/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-multi-connectors/build.gradle index a5d3488125..708fc08194 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-multi-connectors/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-multi-connectors/build.gradle @@ -9,5 +9,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-ssl/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-ssl/build.gradle index cf32104bf8..db2ff3598b 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-ssl/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-tomcat-ssl/build.gradle @@ -9,5 +9,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-traditional/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-traditional/build.gradle index bc16f0a0b8..28019a34c8 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-traditional/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-traditional/build.gradle @@ -19,5 +19,7 @@ dependencies { providedRuntime("org.apache.tomcat.embed:tomcat-embed-jasper") testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-undertow-ssl/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-undertow-ssl/build.gradle index 2cf550b516..371a4757b7 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-undertow-ssl/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-undertow-ssl/build.gradle @@ -12,5 +12,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-undertow")) testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-jsp/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-jsp/build.gradle index 6c1baf1588..f170eab74e 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-jsp/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-jsp/build.gradle @@ -15,7 +15,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) providedRuntime(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-tomcat")) - providedRuntime("javax.servlet:jstl") + providedRuntime("org.glassfish.web:jakarta.servlet.jsp.jstl") providedRuntime("org.apache.tomcat.embed:tomcat-embed-jasper") testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure-custom/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure-custom/build.gradle index 38dd5599c8..66a4ee6bd9 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure-custom/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure-custom/build.gradle @@ -11,5 +11,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure-jdbc/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure-jdbc/build.gradle index 1f9c274153..eb4f383cb7 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure-jdbc/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure-jdbc/build.gradle @@ -14,5 +14,7 @@ dependencies { runtimeOnly("com.h2database:h2") testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } } diff --git a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure/build.gradle index 8b3a7d1bbf..8470c23180 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-web-secure/build.gradle @@ -12,5 +12,7 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } }