From a5fb55fd6d4a3e9e0f01e2694f929f9e3104227b Mon Sep 17 00:00:00 2001 From: Andy Wilkinson Date: Tue, 30 Aug 2022 15:18:49 +0100 Subject: [PATCH] Replace dependency management plugin with built-in platform support --- build.gradle | 251 ++----------------- framework-platform/framework-platform.gradle | 143 +++++++++++ settings.gradle | 1 + spring-test/spring-test.gradle | 8 +- spring-web/spring-web.gradle | 4 +- spring-webflux/spring-webflux.gradle | 9 +- spring-webmvc/spring-webmvc.gradle | 12 +- spring-websocket/spring-websocket.gradle | 5 +- 8 files changed, 189 insertions(+), 244 deletions(-) create mode 100644 framework-platform/framework-platform.gradle diff --git a/build.gradle b/build.gradle index 935c25a6f5..b073919aa7 100644 --- a/build.gradle +++ b/build.gradle @@ -1,5 +1,4 @@ plugins { - id 'io.spring.dependency-management' version '1.0.12.RELEASE' apply false id 'io.spring.nohttp' version '0.0.10' id 'io.freefair.aspectj' version '6.5.0.3' apply false id 'org.jetbrains.dokka' version '1.7.10' apply false @@ -16,247 +15,17 @@ plugins { ext { moduleProjects = subprojects.findAll { it.name.startsWith("spring-") } - javaProjects = subprojects - project(":framework-bom") + javaProjects = subprojects - project(":framework-bom") - project(":framework-platform") withoutJclOverSlf4j = { exclude group: "org.slf4j", name: "jcl-over-slf4j" } } configure(allprojects) { project -> - apply plugin: "io.spring.dependency-management" - - dependencyManagement { - imports { - mavenBom "com.fasterxml.jackson:jackson-bom:2.13.3" - mavenBom "io.netty:netty-bom:4.1.79.Final" - mavenBom "io.projectreactor:reactor-bom:2022.0.0-M4" - mavenBom "io.rsocket:rsocket-bom:1.1.2" - mavenBom "org.eclipse.jetty:jetty-bom:11.0.11" - mavenBom "org.jetbrains.kotlin:kotlin-bom:1.7.10" - mavenBom "org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.2" - mavenBom "org.jetbrains.kotlinx:kotlinx-serialization-bom:1.3.3" - mavenBom "org.junit:junit-bom:5.9.0" - } - dependencies { - dependencySet(group: 'org.apache.logging.log4j', version: '2.18.0') { - entry 'log4j-api' - entry 'log4j-core' - entry 'log4j-jul' - entry 'log4j-slf4j-impl' - } - dependency "org.slf4j:slf4j-api:1.7.36" - dependency("com.google.code.findbugs:findbugs:3.0.1") { - exclude group: "dom4j", name: "dom4j" - } - dependency "com.google.code.findbugs:jsr305:3.0.2" - - dependencySet(group: 'org.aspectj', version: '1.9.9.1') { - entry 'aspectjrt' - entry 'aspectjtools' - entry 'aspectjweaver' - } - dependencySet(group: 'org.apache.groovy', version: '4.0.2') { - entry 'groovy' - entry 'groovy-jsr223' - entry 'groovy-templates' // requires findbugs for warning-free compilation - entry 'groovy-xml' - } - - dependency "io.reactivex.rxjava3:rxjava:3.1.4" - dependency "io.smallrye.reactive:mutiny:1.4.0" - dependency "io.projectreactor.tools:blockhound:1.0.6.RELEASE" - dependency "io.r2dbc:r2dbc-spi:1.0.0.RELEASE" - dependency "io.r2dbc:r2dbc-spi-test:1.0.0.RELEASE" - dependency "io.r2dbc:r2dbc-h2:1.0.0.RC1" - - dependency "com.fasterxml:aalto-xml:1.3.1" - dependency("com.fasterxml.woodstox:woodstox-core:6.3.0") { - exclude group: "stax", name: "stax-api" - } - dependency "com.google.code.gson:gson:2.9.0" - dependency "com.google.protobuf:protobuf-java-util:3.21.2" - dependency "com.googlecode.protobuf-java-format:protobuf-java-format:1.4" - dependency "com.thoughtworks.qdox:qdox:2.0.1" - dependency("com.thoughtworks.xstream:xstream:1.4.19") { - exclude group: "xpp3", name: "xpp3_min" - exclude group: "xmlpull", name: "xmlpull" - } - dependency "org.eclipse:yasson:2.0.4" - dependency("org.codehaus.jettison:jettison:1.3.8") { - exclude group: "stax", name: "stax-api" - } - dependency "org.ogce:xpp3:1.1.6" - dependency "org.yaml:snakeyaml:1.30" - - dependency "com.h2database:h2:2.1.214" - dependency "com.github.ben-manes.caffeine:caffeine:3.1.1" - dependency "com.github.librepdf:openpdf:1.3.29" - dependency "com.rometools:rome:1.18.0" - dependency "commons-io:commons-io:2.11.0" - dependency "info.picocli:picocli:4.6.3" - dependency "io.vavr:vavr:0.10.4" - dependency "net.sf.jopt-simple:jopt-simple:5.0.4" - dependencySet(group: 'org.apache.activemq', version: '5.16.2') { - entry 'activemq-broker' - entry('activemq-kahadb-store') { - exclude group: "org.springframework", name: "spring-context" - } - entry 'activemq-stomp' - } - dependency "org.apache.commons:commons-pool2:2.9.0" - dependencySet(group: 'org.apache.derby', version: '10.14.2.0') { - entry 'derby' - entry 'derbyclient' - } - dependency "org.apache.poi:poi-ooxml:5.2.2" - dependency "org.apache-extras.beanshell:bsh:2.0b6" - dependency "org.freemarker:freemarker:2.3.31" - dependency "org.hsqldb:hsqldb:2.5.2" - dependency "org.quartz-scheduler:quartz:2.3.2" - dependency "org.ehcache:jcache:1.0.1" - dependency "org.ehcache:ehcache:3.4.0" - dependency "org.hibernate:hibernate-core-jakarta:5.6.10.Final" - dependency "org.hibernate:hibernate-validator:7.0.4.Final" - dependency "org.webjars:webjars-locator-core:0.48" - dependency "org.webjars:underscorejs:1.8.3" - - dependencySet(group: 'org.apache.tomcat', version: '10.0.22') { - entry 'tomcat-util' - entry('tomcat-websocket') { - exclude group: "org.apache.tomcat", name: "tomcat-servlet-api" - exclude group: "org.apache.tomcat", name: "tomcat-websocket-api" - } - } - dependencySet(group: 'org.apache.tomcat.embed', version: '10.0.22') { - entry 'tomcat-embed-core' - entry 'tomcat-embed-websocket' - } - dependencySet(group: 'io.undertow', version: '2.2.18.Final') { - entry 'undertow-core' - entry 'undertow-servlet-jakarta' - entry 'undertow-websockets-jsr-jakarta' - } - - dependency "org.eclipse.jetty:jetty-reactive-httpclient:3.0.6" - dependency 'org.apache.httpcomponents.client5:httpclient5:5.1.3' - dependency 'org.apache.httpcomponents.core5:httpcore5-reactive:5.1.3' - dependency("org.apache.httpcomponents:httpclient:4.5.13") { - exclude group: "commons-logging", name: "commons-logging" - } - dependencySet(group: 'com.squareup.okhttp3', version: '3.14.9') { - entry 'okhttp' - entry 'mockwebserver' - } - - dependency "org.jruby:jruby:9.3.4.0" - dependency "org.python:jython-standalone:2.7.1" - dependency "org.mozilla:rhino:1.7.11" - - dependency("org.dom4j:dom4j:2.1.3") { - exclude group: 'javax.xml.bind', name: "jaxb-api" - exclude group: "jaxen", name: "jaxen" - exclude group: "net.java.dev.msv", name: "xsdlib" - exclude group: "pull-parser", name: "pull-parser" - exclude group: "xpp3", name: "xpp3" - } - dependency("jaxen:jaxen:1.2.0") { - exclude group: "dom4j", name: "dom4j" - } - - dependency("junit:junit:4.13.2") { - exclude group: "org.hamcrest", name: "hamcrest-core" - } - dependency("de.bechte.junit:junit-hierarchicalcontextrunner:4.12.1") { - exclude group: "junit", name: "junit" - } - dependency "org.testng:testng:7.6.1" - dependency "org.junit.support:testng-engine:1.0.4" - dependency "org.hamcrest:hamcrest:2.2" - dependency "org.awaitility:awaitility:3.1.6" - dependency "org.assertj:assertj-core:3.23.1" - dependencySet(group: 'org.xmlunit', version: '2.9.0') { - entry 'xmlunit-assertj' - entry('xmlunit-matchers') { - exclude group: "org.hamcrest", name: "hamcrest-core" - } - } - dependencySet(group: 'org.mockito', version: '4.6.1') { - entry('mockito-core') { - exclude group: "org.hamcrest", name: "hamcrest-core" - } - entry 'mockito-junit-jupiter' - } - dependency "io.mockk:mockk:1.12.1" - - dependency("net.sourceforge.htmlunit:htmlunit:2.63.0") { - exclude group: "commons-logging", name: "commons-logging" - } - dependency("org.seleniumhq.selenium:htmlunit-driver:2.63.0") { - exclude group: "commons-logging", name: "commons-logging" - } - dependency("org.seleniumhq.selenium:selenium-java:3.141.59") { - exclude group: "commons-logging", name: "commons-logging" - exclude group: "io.netty", name: "netty" - } - dependency "org.skyscreamer:jsonassert:1.5.0" - dependency "com.jayway.jsonpath:json-path:2.6.0" - dependency "org.bouncycastle:bcpkix-jdk18on:1.71" - - dependency "javax.cache:cache-api:1.1.1" - dependency "javax.money:money-api:1.1" - dependency "org.javamoney:moneta:1.4.2" - - dependency "jakarta.activation:jakarta.activation-api:2.0.1" - dependency "jakarta.annotation:jakarta.annotation-api:2.0.0" - dependency "jakarta.ejb:jakarta.ejb-api:4.0.0" - dependency "jakarta.el:jakarta.el-api:4.0.0" - dependency "jakarta.enterprise.concurrent:jakarta.enterprise.concurrent-api:2.0.0" - dependency "jakarta.faces:jakarta.faces-api:3.0.0" - dependency "jakarta.inject:jakarta.inject-api:2.0.0" - dependency "jakarta.inject:jakarta.inject-tck:2.0.1" - dependency "jakarta.interceptor:jakarta.interceptor-api:2.0.0" - dependency "jakarta.jms:jakarta.jms-api:3.0.0" - dependency "jakarta.json:jakarta.json-api:2.0.1" - dependency "jakarta.json.bind:jakarta.json.bind-api:2.0.0" - dependency "jakarta.mail:jakarta.mail-api:2.0.1" - dependency "jakarta.persistence:jakarta.persistence-api:3.0.0" - dependency "jakarta.resource:jakarta.resource-api:2.0.0" - dependency "jakarta.servlet:jakarta.servlet-api:5.0.0" - dependency "jakarta.servlet.jsp:jakarta.servlet.jsp-api:3.0.0" - dependency "jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:2.0.0" - dependency "jakarta.transaction:jakarta.transaction-api:2.0.0" - dependency "jakarta.validation:jakarta.validation-api:3.0.0" - dependency "jakarta.websocket:jakarta.websocket-api:2.0.0" - dependency "jakarta.xml.bind:jakarta.xml.bind-api:3.0.1" - - dependency "com.sun.activation:jakarta.activation:2.0.1" - dependency "com.sun.mail:jakarta.mail:2.0.1" - dependencySet(group: 'com.sun.xml.bind', version: '3.0.2') { - entry 'jaxb-core' - entry 'jaxb-impl' - entry 'jaxb-xjc' - } - - // Substitute for "javax.management:jmxremote_optional:1.0.1_04" which - // is not available on Maven Central - dependency "org.glassfish.external:opendmk_jmxremote_optional_jar:1.0-b01-ea" - dependency "org.glassfish:jakarta.el:4.0.2" - dependency "org.glassfish.tyrus:tyrus-container-servlet:2.0.1" - dependency "org.eclipse.persistence:org.eclipse.persistence.jpa:3.0.2" - - dependency "org.graalvm.nativeimage:svm:22.1.0.1" - } - generatedPomCustomization { - enabled = false - } - resolutionStrategy { - cacheChangingModulesFor 0, "seconds" - } - repositories { - mavenCentral() - maven { url "https://repo.spring.io/libs-spring-framework-build" } - maven { url "https://repo.spring.io/milestone" } // temporarily for context-propagation via Reactor Netty - } + repositories { + mavenCentral() + maven { url "https://repo.spring.io/libs-spring-framework-build" } + maven { url "https://repo.spring.io/milestone" } // temporarily for context-propagation via Reactor Netty } configurations.all { resolutionStrategy { @@ -276,6 +45,15 @@ configure([rootProject] + javaProjects) { project -> apply from: "${rootDir}/gradle/toolchains.gradle" apply from: "${rootDir}/gradle/ide.gradle" + configurations { + dependencyManagement { + canBeConsumed = false + canBeResolved = false + visible = false + } + matching { it.name.endsWith("Classpath") }.all { it.extendsFrom(dependencyManagement) } + } + pluginManager.withPlugin("kotlin") { apply plugin: "org.jetbrains.dokka" apply from: "${rootDir}/gradle/docs-dokka.gradle" @@ -309,6 +87,7 @@ configure([rootProject] + javaProjects) { project -> } dependencies { + dependencyManagement(enforcedPlatform(dependencies.project(path: ":framework-platform"))) testImplementation("org.junit.jupiter:junit-jupiter-api") testImplementation("org.junit.jupiter:junit-jupiter-params") testImplementation("org.junit.platform:junit-platform-suite-api") diff --git a/framework-platform/framework-platform.gradle b/framework-platform/framework-platform.gradle new file mode 100644 index 0000000000..01d601f9a2 --- /dev/null +++ b/framework-platform/framework-platform.gradle @@ -0,0 +1,143 @@ +plugins { + id 'java-platform' +} + +javaPlatform { + allowDependencies() +} + +dependencies { + api(platform("com.fasterxml.jackson:jackson-bom:2.13.3")) + api(platform("io.netty:netty-bom:4.1.79.Final")) + api(platform("io.projectreactor:reactor-bom:2022.0.0-M4")) + api(platform("io.rsocket:rsocket-bom:1.1.2")) + api(platform("org.apache.groovy:groovy-bom:4.0.4")) + api(platform("org.apache.logging.log4j:log4j-bom:2.18.0")) + api(platform("org.eclipse.jetty:jetty-bom:11.0.11")) + api(platform("org.jetbrains.kotlinx:kotlinx-coroutines-bom:1.6.2")) + api(platform("org.jetbrains.kotlinx:kotlinx-serialization-bom:1.3.3")) + api(platform("org.junit:junit-bom:5.9.0")) + api(platform("org.mockito:mockito-bom:4.6.1")) + + constraints { + api("com.fasterxml.woodstox:woodstox-core:6.3.0") + api("com.fasterxml:aalto-xml:1.3.1") + api("com.github.ben-manes.caffeine:caffeine:3.1.1") + api("com.github.librepdf:openpdf:1.3.29") + api("com.google.code.findbugs:findbugs:3.0.1") + api("com.google.code.findbugs:jsr305:3.0.2") + api("com.google.code.gson:gson:2.9.0") + api("com.google.protobuf:protobuf-java-util:3.21.2") + api("com.googlecode.protobuf-java-format:protobuf-java-format:1.4") + api("com.h2database:h2:2.1.214") + api("com.jayway.jsonpath:json-path:2.6.0") + api("com.rometools:rome:1.18.0") + api("com.squareup.okhttp3:mockwebserver:3.14.9") + api("com.squareup.okhttp3:okhttp:3.14.9") + api("com.sun.activation:jakarta.activation:2.0.1") + api("com.sun.mail:jakarta.mail:2.0.1") + api("com.sun.xml.bind:jaxb-core:3.0.2") + api("com.sun.xml.bind:jaxb-impl:3.0.2") + api("com.sun.xml.bind:jaxb-xjc:3.0.2") + api("com.thoughtworks.qdox:qdox:2.0.1") + api("com.thoughtworks.xstream:xstream:1.4.19") + api("commons-io:commons-io:2.11.0") + api("de.bechte.junit:junit-hierarchicalcontextrunner:4.12.1") + api("info.picocli:picocli:4.6.3") + api("io.mockk:mockk:1.12.1") + api("io.projectreactor.tools:blockhound:1.0.6.RELEASE") + api("io.r2dbc:r2dbc-h2:1.0.0.RC1") + api("io.r2dbc:r2dbc-spi-test:1.0.0.RELEASE") + api("io.r2dbc:r2dbc-spi:1.0.0.RELEASE") + api("io.reactivex.rxjava3:rxjava:3.1.4") + api("io.smallrye.reactive:mutiny:1.4.0") + api("io.undertow:undertow-core:2.2.18.Final") + api("io.undertow:undertow-servlet-jakarta:2.2.18.Final") + api("io.undertow:undertow-websockets-jsr-jakarta:2.2.18.Final") + api("io.vavr:vavr:0.10.4") + api("jakarta.activation:jakarta.activation-api:2.0.1") + api("jakarta.annotation:jakarta.annotation-api:2.0.0") + api("jakarta.ejb:jakarta.ejb-api:4.0.0") + api("jakarta.el:jakarta.el-api:4.0.0") + api("jakarta.enterprise.concurrent:jakarta.enterprise.concurrent-api:2.0.0") + api("jakarta.faces:jakarta.faces-api:3.0.0") + api("jakarta.inject:jakarta.inject-api:2.0.0") + api("jakarta.inject:jakarta.inject-tck:2.0.1") + api("jakarta.interceptor:jakarta.interceptor-api:2.0.0") + api("jakarta.jms:jakarta.jms-api:3.0.0") + api("jakarta.json.bind:jakarta.json.bind-api:2.0.0") + api("jakarta.json:jakarta.json-api:2.0.1") + api("jakarta.mail:jakarta.mail-api:2.0.1") + api("jakarta.persistence:jakarta.persistence-api:3.0.0") + api("jakarta.resource:jakarta.resource-api:2.0.0") + api("jakarta.servlet.jsp.jstl:jakarta.servlet.jsp.jstl-api:2.0.0") + api("jakarta.servlet.jsp:jakarta.servlet.jsp-api:3.0.0") + api("jakarta.servlet:jakarta.servlet-api:5.0.0") + api("jakarta.transaction:jakarta.transaction-api:2.0.0") + api("jakarta.validation:jakarta.validation-api:3.0.0") + api("jakarta.websocket:jakarta.websocket-api:2.0.0") + api("jakarta.xml.bind:jakarta.xml.bind-api:3.0.1") + api("javax.cache:cache-api:1.1.1") + api("javax.money:money-api:1.1") + api("jaxen:jaxen:1.2.0") + api("junit:junit:4.13.2") + api("net.sf.jopt-simple:jopt-simple:5.0.4") + api("net.sourceforge.htmlunit:htmlunit:2.63.0") + api("org.apache-extras.beanshell:bsh:2.0b6") + api("org.apache.activemq:activemq-broker:5.16.2") + api("org.apache.activemq:activemq-kahadb-store:5.16.2") + api("org.apache.activemq:activemq-stomp:5.16.2") + api("org.apache.commons:commons-pool2:2.9.0") + api("org.apache.derby:derby:10.14.2.0") + api("org.apache.derby:derbyclient:10.14.2.0") + api("org.apache.httpcomponents.client5:httpclient5:5.1.3") + api("org.apache.httpcomponents.core5:httpcore5-reactive:5.1.3") + api("org.apache.httpcomponents:httpclient:4.5.13") + api("org.apache.poi:poi-ooxml:5.2.2") + api("org.apache.tomcat.embed:tomcat-embed-core:10.0.22") + api("org.apache.tomcat.embed:tomcat-embed-websocket:10.0.22") + api("org.apache.tomcat:tomcat-util:10.0.22") + api("org.apache.tomcat:tomcat-websocket:10.0.22") + api("org.aspectj:aspectjrt:1.9.9.1") + api("org.aspectj:aspectjtools:1.9.9.1") + api("org.aspectj:aspectjweaver:1.9.9.1") + api("org.assertj:assertj-core:3.23.1") + api("org.awaitility:awaitility:3.1.6") + api("org.bouncycastle:bcpkix-jdk18on:1.71") + api("org.codehaus.jettison:jettison:1.3.8") + api("org.dom4j:dom4j:2.1.3") + api("org.eclipse.jetty:jetty-reactive-httpclient:3.0.6") + api("org.eclipse.persistence:org.eclipse.persistence.jpa:3.0.2") + api("org.eclipse:yasson:2.0.4") + api("org.ehcache:ehcache:3.4.0") + api("org.ehcache:jcache:1.0.1") + api("org.freemarker:freemarker:2.3.31") + // Substitute for "javax.management:jmxremote_optional:1.0.1_04" which + // is not available on Maven Central + api("org.glassfish.external:opendmk_jmxremote_optional_jar:1.0-b01-ea") + api("org.glassfish.tyrus:tyrus-container-servlet:2.0.1") + api("org.glassfish:jakarta.el:4.0.2") + api("org.graalvm.nativeimage:svm:22.1.0.1") + api("org.hamcrest:hamcrest:2.2") + api("org.hibernate:hibernate-core-jakarta:5.6.10.Final") + api("org.hibernate:hibernate-validator:7.0.4.Final") + api("org.hsqldb:hsqldb:2.5.2") + api("org.javamoney:moneta:1.4.2") + api("org.jruby:jruby:9.3.4.0") + api("org.junit.support:testng-engine:1.0.4") + api("org.mozilla:rhino:1.7.11") + api("org.ogce:xpp3:1.1.6") + api("org.python:jython-standalone:2.7.1") + api("org.quartz-scheduler:quartz:2.3.2") + api("org.seleniumhq.selenium:htmlunit-driver:2.63.0") + api("org.seleniumhq.selenium:selenium-java:3.141.59") + api("org.skyscreamer:jsonassert:1.5.0") + api("org.slf4j:slf4j-api:1.7.36") + api("org.testng:testng:7.6.1") + api("org.webjars:underscorejs:1.8.3") + api("org.webjars:webjars-locator-core:0.48") + api("org.xmlunit:xmlunit-assertj:2.9.0") + api("org.xmlunit:xmlunit-matchers:2.9.0") + api("org.yaml:snakeyaml:1.30") + } +} diff --git a/settings.gradle b/settings.gradle index 68db124f87..4fc69d095c 100644 --- a/settings.gradle +++ b/settings.gradle @@ -37,6 +37,7 @@ include "spring-webflux" include "spring-webmvc" include "spring-websocket" include "framework-bom" +include "framework-platform" include "integration-tests" rootProject.name = "spring" diff --git a/spring-test/spring-test.gradle b/spring-test/spring-test.gradle index b992cd021d..87bdd7cba6 100644 --- a/spring-test/spring-test.gradle +++ b/spring-test/spring-test.gradle @@ -31,7 +31,9 @@ dependencies { optional("org.aspectj:aspectjweaver") optional("org.apache.groovy:groovy") optional("org.hamcrest:hamcrest") - optional("net.sourceforge.htmlunit:htmlunit") + optional("net.sourceforge.htmlunit:htmlunit") { + exclude group: "commons-logging", module: "commons-logging" + } optional("org.seleniumhq.selenium:htmlunit-driver") { exclude group: "net.bytebuddy", module: "byte-buddy" } @@ -67,7 +69,9 @@ dependencies { testImplementation("com.thoughtworks.xstream:xstream") testImplementation("com.rometools:rome") testImplementation("org.hsqldb:hsqldb") - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } testImplementation("io.projectreactor.netty:reactor-netty-http") testImplementation("de.bechte.junit:junit-hierarchicalcontextrunner") testRuntimeOnly("org.junit.vintage:junit-vintage-engine") { diff --git a/spring-web/spring-web.gradle b/spring-web/spring-web.gradle index 74da77ee78..8835da7961 100644 --- a/spring-web/spring-web.gradle +++ b/spring-web/spring-web.gradle @@ -35,7 +35,9 @@ dependencies { optional("org.eclipse.jetty:jetty-reactive-httpclient") optional('org.apache.httpcomponents.client5:httpclient5') optional('org.apache.httpcomponents.core5:httpcore5-reactive') - optional("org.apache.httpcomponents:httpclient") + optional("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } optional("com.squareup.okhttp3:okhttp") optional("com.fasterxml.woodstox:woodstox-core") optional("com.fasterxml:aalto-xml") diff --git a/spring-webflux/spring-webflux.gradle b/spring-webflux/spring-webflux.gradle index 21b587f87b..60942ceb4d 100644 --- a/spring-webflux/spring-webflux.gradle +++ b/spring-webflux/spring-webflux.gradle @@ -16,13 +16,18 @@ dependencies { optional("com.fasterxml.jackson.core:jackson-databind") optional("com.fasterxml.jackson.dataformat:jackson-dataformat-smile") optional("io.projectreactor.netty:reactor-netty-http") - optional("org.apache.tomcat:tomcat-websocket") + optional("org.apache.tomcat:tomcat-websocket") { + exclude group: "org.apache.tomcat", module: "tomcat-servlet-api" + exclude group: "org.apache.tomcat", module: "tomcat-websocket-api" + } optional("org.eclipse.jetty.websocket:websocket-jetty-server") { exclude group: "jakarta.servlet", module: "jakarta.servlet-api" } optional("org.eclipse.jetty.websocket:websocket-jetty-client") optional("io.undertow:undertow-websockets-jsr-jakarta") - optional("org.apache.httpcomponents:httpclient") + optional("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } optional("org.jetbrains.kotlin:kotlin-reflect") optional("org.jetbrains.kotlin:kotlin-stdlib") optional("com.google.protobuf:protobuf-java-util") diff --git a/spring-webmvc/spring-webmvc.gradle b/spring-webmvc/spring-webmvc.gradle index c2ccacb2f0..1f3554694a 100644 --- a/spring-webmvc/spring-webmvc.gradle +++ b/spring-webmvc/spring-webmvc.gradle @@ -42,10 +42,18 @@ dependencies { testImplementation("org.eclipse.jetty:jetty-server") { exclude group: "jakarta.servlet", module: "jakarta.servlet-api" } - testImplementation("org.apache.httpcomponents:httpclient") + testImplementation("org.apache.httpcomponents:httpclient") { + exclude group: "commons-logging", module: "commons-logging" + } testImplementation("commons-io:commons-io") testImplementation("org.mozilla:rhino") - testImplementation("org.dom4j:dom4j") + testImplementation("org.dom4j:dom4j") { + exclude group: "javax.xml.bind", module: "jaxb-api" + exclude group: "jaxen", module: "jaxen" + exclude group: "net.java.dev.msv", module: "xsdlib" + exclude group: "pull-parser", module: "pull-parser" + exclude group: "xpp3", module: "xpp3" + } testImplementation("jaxen:jaxen") testImplementation("org.xmlunit:xmlunit-assertj") testImplementation("org.xmlunit:xmlunit-matchers") diff --git a/spring-websocket/spring-websocket.gradle b/spring-websocket/spring-websocket.gradle index 8fdf48c507..3c9d011b4a 100644 --- a/spring-websocket/spring-websocket.gradle +++ b/spring-websocket/spring-websocket.gradle @@ -8,7 +8,10 @@ dependencies { optional(project(":spring-webmvc")) optional("jakarta.servlet:jakarta.servlet-api") optional("jakarta.websocket:jakarta.websocket-api") - optional("org.apache.tomcat:tomcat-websocket") + optional("org.apache.tomcat:tomcat-websocket") { + exclude group: "org.apache.tomcat", module: "tomcat-servlet-api" + exclude group: "org.apache.tomcat", module: "tomcat-websocket-api" + } optional("org.glassfish.tyrus:tyrus-container-servlet") optional("org.eclipse.jetty:jetty-webapp") { exclude group: "jakarta.servlet", module: "jakarta.servlet-api"