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 c7e00ca2d5..d82ba98cec 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 91759528ed..7a52f189e6 100644 --- a/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-actuator-autoconfigure/build.gradle @@ -36,7 +36,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") @@ -48,7 +50,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") @@ -60,8 +64,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") @@ -69,30 +78,54 @@ 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.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: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-micrometer") + 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-micrometer") { + 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") @@ -103,13 +136,17 @@ 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-jpa") 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.integration:spring-integration-core") optional("org.springframework.kafka:spring-kafka") optional("org.springframework.security:spring-security-config") @@ -125,15 +162,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") @@ -143,16 +182,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 9066aa32ce..a9a6a5c9bd 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,29 +24,39 @@ 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.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.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") @@ -55,9 +67,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") @@ -88,7 +104,7 @@ dependencies { testRuntimeOnly("ch.qos.logback:logback-classic") 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 c82d377fd9..fe176b12d4 100644 --- a/spring-boot-project/spring-boot-autoconfigure/build.gradle +++ b/spring-boot-project/spring-boot-autoconfigure/build.gradle @@ -36,29 +36,47 @@ 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.httpcomponents.client5:httpclient5") 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") @@ -67,20 +85,34 @@ dependencies { 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-client-sniffer") - 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-client-sniffer") { + 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") @@ -88,16 +120,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,10 +167,17 @@ dependencies { optional("org.springframework:spring-webmvc") optional("org.springframework.batch:spring-batch-core") optional("org.springframework.data:spring-data-couchbase") - optional("org.springframework.data:spring-data-envers") + optional("org.springframework.data:spring-data-envers") { + 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.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" } @@ -131,7 +190,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") @@ -141,7 +202,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.amqp:spring-rabbit-stream") @@ -190,5 +253,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 e2e9cef368..9608a448db 100644 --- a/spring-boot-project/spring-boot-cli/build.gradle +++ b/spring-boot-project/spring-boot-cli/build.gradle @@ -31,13 +31,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 f06d82457f..75c01deddc 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") @@ -34,9 +36,15 @@ dependencies { optional("io.projectreactor:reactor-core") optional("io.r2dbc:r2dbc-spi") - 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 ce7a73207f..e2d67fde51 100644 --- a/spring-boot-project/spring-boot-docs/build.gradle +++ b/spring-boot-project/spring-boot-docs/build.gradle @@ -78,18 +78,33 @@ dependencies { implementation("io.undertow:undertow-core") implementation("jakarta.annotation:jakarta.annotation-api") implementation("jakarta.jms:jakarta.jms-api") + implementation("jakarta.persistence:jakarta.persistence-api") implementation("jakarta.servlet:jakarta.servlet-api") - implementation("net.sourceforge.htmlunit:htmlunit") - implementation("org.apache.commons:commons-dbcp2") + implementation("net.sourceforge.htmlunit:htmlunit") { + exclude group: "commons-logging", module: "commons-logging" + } + implementation("org.apache.commons:commons-dbcp2") { + exclude group: "commons-logging", module: "commons-logging" + } implementation("org.apache.kafka:kafka-streams") implementation("org.apache.logging.log4j:log4j-to-slf4j") - implementation("org.apache.solr:solr-solrj") + implementation("org.apache.solr:solr-solrj") { + exclude group: "commons-logging", module: "commons-logging" + exclude group: "org.slf4j", module: "jcl-over-slf4j" + } implementation("org.apache.tomcat.embed:tomcat-embed-core") implementation("org.assertj:assertj-core") implementation("org.glassfish.jersey.core:jersey-server") implementation("org.glassfish.jersey.containers:jersey-container-servlet-core") - implementation("org.hibernate:hibernate-jcache") - implementation("org.jooq:jooq") + 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.jooq:jooq") { + exclude group: "javax.xml.bind", module: "jaxb-api" + } implementation("org.mockito:mockito-core") implementation("org.mongodb:mongodb-driver-sync") implementation("org.quartz-scheduler:quartz") @@ -107,8 +122,15 @@ dependencies { implementation("org.springframework.batch:spring-batch-core") implementation("org.springframework.data:spring-data-cassandra") implementation("org.springframework.data:spring-data-couchbase") - implementation("org.springframework.data:spring-data-elasticsearch") - implementation("org.springframework.data:spring-data-envers") + implementation("org.springframework.data:spring-data-elasticsearch") { + exclude group: "commons-logging", module: "commons-logging" + } + implementation("org.springframework.data:spring-data-envers") { + 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.data:spring-data-jpa") implementation("org.springframework.data:spring-data-ldap") implementation("org.springframework.data:spring-data-mongodb") @@ -117,8 +139,14 @@ dependencies { implementation("org.springframework.data:spring-data-r2dbc") implementation("org.springframework.kafka:spring-kafka") implementation("org.springframework.kafka:spring-kafka-test") - implementation("org.springframework.restdocs:spring-restdocs-mockmvc") - implementation("org.springframework.restdocs:spring-restdocs-restassured") + implementation("org.springframework.restdocs:spring-restdocs-mockmvc") { + exclude group: "javax.servlet", module: "javax.servlet-api" + } + 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-oauth2-client") diff --git a/spring-boot-project/spring-boot-parent/build.gradle b/spring-boot-project/spring-boot-parent/build.gradle index 000f8608f3..8aeecefab4 100644 --- a/spring-boot-project/spring-boot-parent/build.gradle +++ b/spring-boot-project/spring-boot-parent/build.gradle @@ -41,6 +41,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 492dec0c23..6bcba07f56 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") api("org.tomlj:tomlj:1.0.0") 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 030cb8f5fe..77f2f4bd6e 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 @@ -22,7 +22,9 @@ dependencies { implementation("org.apache.commons:commons-compress") implementation("org.springframework:spring-core") - optional("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") + optional("org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlinVersion") { + exclude(group: "commons-logging", module: "commons-logging") + } testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-gradle-test-support")) 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 06e76c5c72..a2fe33e5f0 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 @@ -30,19 +30,30 @@ 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")) intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) - intTestImplementation("org.apache.maven.shared:maven-invoker") + intTestImplementation("org.apache.maven.shared:maven-invoker") { + exclude(group: "javax.inject", module: "javax.inject") + } intTestImplementation("org.assertj:assertj-core") intTestImplementation("org.junit.jupiter:junit-jupiter") 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 0881a2bcf5..246b24ae2f 100644 --- a/spring-boot-project/spring-boot/build.gradle +++ b/spring-boot-project/spring-boot/build.gradle @@ -39,14 +39,20 @@ 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.persistence:jakarta.persistence-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.httpcomponents.client5:httpclient5") optional("org.apache.logging.log4j:log4j-api") optional("org.apache.logging.log4j:log4j-core") @@ -58,15 +64,30 @@ dependencies { 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.flywaydb:flyway-core") 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.jooq:jooq") - optional("org.liquibase:liquibase-core") + 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.postgresql:postgresql") optional("org.slf4j:jul-to-slf4j") optional("org.slf4j:slf4j-api") @@ -85,7 +106,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.ibm.db2:jcc") testImplementation("com.jayway.jsonpath:json-path") testImplementation("com.microsoft.sqlserver:mssql-jdbc") @@ -93,7 +116,8 @@ dependencies { testImplementation("com.sun.xml.messaging.saaj:saaj-impl") testImplementation("io.projectreactor:reactor-test") testImplementation("io.r2dbc:r2dbc-h2") - 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") @@ -101,7 +125,9 @@ dependencies { testImplementation("org.eclipse.jetty:jetty-client") testImplementation("org.eclipse.jetty.http2:http2-client") testImplementation("org.eclipse.jetty.http2:http2-http-client-transport") - 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-system-tests/spring-boot-deployment-tests/build.gradle b/spring-boot-system-tests/spring-boot-deployment-tests/build.gradle index 2b211c7b8e..c4d58da244 100644 --- a/spring-boot-system-tests/spring-boot-deployment-tests/build.gradle +++ b/spring-boot-system-tests/spring-boot-deployment-tests/build.gradle @@ -25,7 +25,9 @@ dependencies { systemTestImplementation(enforcedPlatform(project(path: ":spring-boot-project:spring-boot-parent"))) systemTestImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) systemTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) - systemTestImplementation("org.apache.httpcomponents:httpasyncclient") + systemTestImplementation("org.apache.httpcomponents:httpasyncclient") { + exclude group: "commons-logging", module: "commons-logging" + } systemTestImplementation("org.awaitility:awaitility") systemTestImplementation("org.testcontainers:junit-jupiter") systemTestImplementation("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 67cb04c644..c64175833b 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 @@ -13,7 +13,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-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-session-hazelcast/build.gradle b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-hazelcast/build.gradle index 548705c44f..b8e120525a 100644 --- a/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-hazelcast/build.gradle +++ b/spring-boot-tests/spring-boot-smoke-tests/spring-boot-smoke-test-session-hazelcast/build.gradle @@ -10,7 +10,9 @@ dependencies { implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-security")) implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) implementation("com.hazelcast:hazelcast") - implementation("org.springframework.session:spring-session-hazelcast") + implementation("org.springframework.session:spring-session-hazelcast") { + exclude group: "javax.annotation", module: "javax.annotation-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-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" + } }