Prohibit unwanted dependencies in all modules not just starters

Closes gh-28658
This commit is contained in:
Andy Wilkinson 2021-11-12 17:54:32 +00:00
parent 0889cdd516
commit 2cec3971d7
43 changed files with 429 additions and 136 deletions

View File

@ -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);
}
}

View File

@ -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;
}

View File

@ -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> {
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> {
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"),

View File

@ -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");

View File

@ -26,7 +26,9 @@ dependencies {
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
optional("ch.qos.logback:logback-classic")
optional("com.datastax.oss:java-driver-core")
optional("com.datastax.oss:java-driver-core") {
exclude group: "org.slf4j", module: "jcl-over-slf4j"
}
optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")
optional("com.github.ben-manes.caffeine:caffeine")
optional("com.hazelcast:hazelcast")
@ -38,7 +40,9 @@ dependencies {
optional("io.micrometer:micrometer-core")
optional("io.micrometer:micrometer-jersey2")
optional("io.micrometer:micrometer-registry-appoptics")
optional("io.micrometer:micrometer-registry-atlas")
optional("io.micrometer:micrometer-registry-atlas") {
exclude group: "javax.inject", module: "javax.inject"
}
optional("io.micrometer:micrometer-registry-datadog")
optional("io.micrometer:micrometer-registry-dynatrace")
optional("io.micrometer:micrometer-registry-elastic")
@ -50,8 +54,13 @@ dependencies {
optional("io.micrometer:micrometer-registry-kairos")
optional("io.micrometer:micrometer-registry-new-relic")
optional("io.micrometer:micrometer-registry-prometheus")
optional("io.micrometer:micrometer-registry-stackdriver")
optional("io.prometheus:simpleclient_pushgateway")
optional("io.micrometer:micrometer-registry-stackdriver") {
exclude group: "commons-logging", module: "commons-logging"
exclude group: "javax.annotation", module: "javax.annotation-api"
}
optional("io.prometheus:simpleclient_pushgateway") {
exclude group: "javax.xml.bind", module: "jaxb-api"
}
optional("io.micrometer:micrometer-registry-signalfx")
optional("io.micrometer:micrometer-registry-statsd")
optional("io.micrometer:micrometer-registry-wavefront")
@ -59,28 +68,45 @@ dependencies {
optional("io.r2dbc:r2dbc-pool")
optional("io.r2dbc:r2dbc-spi")
optional("jakarta.jms:jakarta.jms-api")
optional("jakarta.persistence:jakarta.persistence-api")
optional("jakarta.servlet:jakarta.servlet-api")
optional("javax.cache:cache-api")
optional("net.sf.ehcache:ehcache")
optional("org.apache.activemq:activemq-broker")
optional("org.apache.commons:commons-dbcp2")
optional("org.apache.activemq:activemq-broker") {
exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_1.1_spec"
exclude group: "org.apache.geronimo.specs", module: "geronimo-j2ee-management_1.1_spec"
}
optional("org.apache.commons:commons-dbcp2") {
exclude group: "commons-logging", module: "commons-logging"
}
optional("org.apache.kafka:kafka-clients")
optional("org.apache.kafka:kafka-streams")
optional("org.apache.tomcat.embed:tomcat-embed-core")
optional("org.apache.tomcat.embed:tomcat-embed-el")
optional("org.apache.tomcat:tomcat-jdbc")
optional("org.aspectj:aspectjweaver")
optional("org.eclipse.jetty:jetty-server")
optional("org.eclipse.jetty:jetty-server") {
exclude group: "javax.servlet", module: "javax.servlet-api"
}
optional("org.elasticsearch:elasticsearch")
optional("org.elasticsearch.client:elasticsearch-rest-client")
optional("org.elasticsearch.client:elasticsearch-rest-client") {
exclude group: "commons-logging", module: "commons-logging"
}
optional("org.flywaydb:flyway-core")
optional("org.glassfish.jersey.core:jersey-server")
optional("org.glassfish.jersey.containers:jersey-container-servlet-core")
optional("org.hibernate:hibernate-core")
optional("org.hibernate:hibernate-core") {
exclude group: "javax.activation", module: "javax.activation-api"
exclude group: "javax.persistence", module: "javax.persistence-api"
exclude group: "javax.xml.bind", module: "jaxb-api"
exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec"
}
optional("org.hibernate.validator:hibernate-validator")
optional("org.influxdb:influxdb-java")
optional("org.jolokia:jolokia-core")
optional("org.liquibase:liquibase-core")
optional("org.liquibase:liquibase-core") {
exclude group: "javax.xml.bind", module: "jaxb-api"
}
optional("org.mongodb:mongodb-driver-reactivestreams")
optional("org.mongodb:mongodb-driver-sync")
optional("org.neo4j.driver:neo4j-java-driver")
@ -90,12 +116,16 @@ dependencies {
optional("org.springframework:spring-webflux")
optional("org.springframework:spring-webmvc")
optional("org.springframework.amqp:spring-rabbit")
optional("org.springframework.data:spring-data-cassandra")
optional("org.springframework.data:spring-data-cassandra") {
exclude group: "org.slf4j", module: "jcl-over-slf4j"
}
optional("org.springframework.data:spring-data-couchbase")
optional("org.springframework.data:spring-data-ldap")
optional("org.springframework.data:spring-data-mongodb")
optional("org.springframework.data:spring-data-redis")
optional("org.springframework.data:spring-data-elasticsearch")
optional("org.springframework.data:spring-data-elasticsearch") {
exclude group: "commons-logging", module: "commons-logging"
}
optional("org.springframework.data:spring-data-solr")
optional("org.springframework.integration:spring-integration-core")
optional("org.springframework.kafka:spring-kafka")
@ -112,15 +142,17 @@ dependencies {
testImplementation("com.jayway.jsonpath:json-path")
testImplementation("io.undertow:undertow-core")
testImplementation("io.undertow:undertow-servlet") {
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec"
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.3_spec"
exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_4.0_spec"
}
testImplementation("javax.xml.bind:jaxb-api")
testImplementation("jakarta.xml.bind:jakarta.xml.bind-api")
testImplementation("org.apache.logging.log4j:log4j-to-slf4j")
testImplementation("org.aspectj:aspectjrt")
testImplementation("org.assertj:assertj-core")
testImplementation("org.awaitility:awaitility")
testImplementation("org.eclipse.jetty:jetty-webapp")
testImplementation("org.eclipse.jetty:jetty-webapp") {
exclude group: "javax.servlet", module: "javax.servlet-api"
}
testImplementation("org.glassfish.jersey.ext:jersey-spring5")
testImplementation("org.glassfish.jersey.media:jersey-media-json-jackson")
testImplementation("org.hamcrest:hamcrest")
@ -130,16 +162,17 @@ dependencies {
testImplementation("org.mockito:mockito-junit-jupiter")
testImplementation("org.skyscreamer:jsonassert")
testImplementation("org.springframework:spring-orm")
testImplementation("org.springframework.data:spring-data-elasticsearch") {
exclude group: "org.elasticsearch.client", module: "transport"
}
testImplementation("org.springframework.data:spring-data-rest-webmvc")
testImplementation("org.springframework.integration:spring-integration-jmx")
testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc")
testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc") {
exclude group: "javax.servlet", module: "javax.servlet-api"
}
testImplementation("org.springframework.restdocs:spring-restdocs-webtestclient")
testImplementation("org.springframework.security:spring-security-test")
testImplementation("org.yaml:snakeyaml")
testRuntimeOnly("jakarta.management.j2ee:jakarta.management.j2ee-api")
testRuntimeOnly("jakarta.transaction:jakarta.transaction-api")
testRuntimeOnly("org.springframework.security:spring-security-oauth2-jose")
testRuntimeOnly("org.springframework.security:spring-security-oauth2-resource-server")
testRuntimeOnly("org.springframework.security:spring-security-saml2-service-provider")

View File

@ -11,7 +11,9 @@ description = "Spring Boot Actuator"
dependencies {
api(project(":spring-boot-project:spring-boot"))
optional("com.datastax.oss:java-driver-core")
optional("com.datastax.oss:java-driver-core") {
exclude group: "org.slf4j", module: "jcl-over-slf4j"
}
optional("com.fasterxml.jackson.core:jackson-databind")
optional("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
optional("com.github.ben-manes.caffeine:caffeine")
@ -22,28 +24,36 @@ dependencies {
optional("io.lettuce:lettuce-core")
optional("io.micrometer:micrometer-core")
optional("io.micrometer:micrometer-registry-prometheus")
optional("io.prometheus:simpleclient_pushgateway")
optional("io.prometheus:simpleclient_pushgateway") {
exclude(group: "javax.xml.bind", module: "jaxb-api")
}
optional("io.r2dbc:r2dbc-pool")
optional("io.r2dbc:r2dbc-spi")
optional("io.reactivex:rxjava-reactive-streams")
optional("org.elasticsearch.client:elasticsearch-rest-client")
optional("org.elasticsearch.client:elasticsearch-rest-client") {
exclude(group: "commons-logging", module: "commons-logging")
}
optional("io.undertow:undertow-servlet") {
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec"
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.3_spec"
exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_4.0_spec"
}
optional("javax.cache:cache-api")
optional("javax.jms:javax.jms-api")
optional("jakarta.jms:jakarta.jms-api")
optional("net.sf.ehcache:ehcache")
optional("org.apache.tomcat.embed:tomcat-embed-core")
optional("org.aspectj:aspectjweaver")
optional("org.eclipse.jetty:jetty-server")
optional("org.eclipse.jetty:jetty-server") {
exclude(group: "javax.servlet", module: "javax.servlet-api")
}
optional("org.elasticsearch:elasticsearch")
optional("org.flywaydb:flyway-core")
optional("org.glassfish.jersey.core:jersey-server")
optional("org.glassfish.jersey.containers:jersey-container-servlet-core")
optional("org.hibernate.validator:hibernate-validator")
optional("org.influxdb:influxdb-java")
optional("org.liquibase:liquibase-core")
optional("org.liquibase:liquibase-core") {
exclude(group: "javax.xml.bind", module: "jaxb-api")
}
optional("org.mongodb:mongodb-driver-reactivestreams")
optional("org.mongodb:mongodb-driver-sync")
optional("org.neo4j.driver:neo4j-java-driver")
@ -53,9 +63,13 @@ dependencies {
optional("org.springframework:spring-web")
optional("org.springframework:spring-webmvc")
optional("org.springframework.amqp:spring-rabbit")
optional("org.springframework.data:spring-data-cassandra")
optional("org.springframework.data:spring-data-cassandra") {
exclude group: "org.slf4j", module: "jcl-over-slf4j"
}
optional("org.springframework.data:spring-data-couchbase")
optional("org.springframework.data:spring-data-elasticsearch")
optional("org.springframework.data:spring-data-elasticsearch") {
exclude(group: "commons-logging", module: "commons-logging")
}
optional("org.springframework.data:spring-data-ldap")
optional("org.springframework.data:spring-data-mongodb")
optional("org.springframework.data:spring-data-redis")
@ -86,7 +100,7 @@ dependencies {
testImplementation("org.testcontainers:junit-jupiter")
testRuntimeOnly("io.projectreactor.netty:reactor-netty-http")
testRuntimeOnly("javax.xml.bind:jaxb-api")
testRuntimeOnly("jakarta.xml.bind:jakarta.xml.bind-api")
testRuntimeOnly("org.apache.tomcat.embed:tomcat-embed-el")
testRuntimeOnly("org.glassfish.jersey.ext:jersey-spring5")
testRuntimeOnly("org.hsqldb:hsqldb")

View File

@ -36,49 +36,81 @@ dependencies {
optional("io.rsocket:rsocket-core")
optional("io.rsocket:rsocket-transport-netty")
optional("io.undertow:undertow-servlet") {
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec"
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.3_spec"
exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_4.0_spec"
}
optional("io.undertow:undertow-websockets-jsr") {
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec"
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.3_spec"
exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_4.0_spec"
exclude group: "org.jboss.spec.javax.websocket", module: "jboss-websocket-api_1.1_spec"
}
optional("jakarta.jms:jakarta.jms-api")
optional("jakarta.mail:jakarta.mail-api")
optional("jakarta.json.bind:jakarta.json.bind-api")
optional("jakarta.persistence:jakarta.persistence-api")
optional("jakarta.transaction:jakarta.transaction-api")
optional("jakarta.validation:jakarta.validation-api")
optional("jakarta.ws.rs:jakarta.ws.rs-api")
optional("javax.cache:cache-api")
optional("javax.money:money-api")
optional("net.sf.ehcache:ehcache")
optional("org.apache.activemq:activemq-broker")
optional("org.apache.activemq:artemis-jms-client")
optional("org.apache.activemq:artemis-jms-server")
optional("org.apache.commons:commons-dbcp2")
optional("org.apache.activemq:activemq-broker") {
exclude group: "org.apache.geronimo.specs", module: "geronimo-j2ee-management_1.1_spec"
exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_1.1_spec"
}
optional("org.apache.activemq:artemis-jms-client") {
exclude group: "commons-logging", module: "commons-logging"
exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_2.0_spec"
exclude group: "org.apache.geronimo.specs", module: "geronimo-json_1.0_spec"
}
optional("org.apache.activemq:artemis-jms-server") {
exclude group: "commons-logging", module: "commons-logging"
exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_2.0_spec"
exclude group: "org.apache.geronimo.specs", module: "geronimo-json_1.0_spec"
exclude group: "org.apache.geronimo.specs", module: "geronimo-jta_1.1_spec"
}
optional("org.apache.commons:commons-dbcp2") {
exclude group: "commons-logging", module: "commons-logging"
}
optional("org.apache.kafka:kafka-streams")
optional("org.apache.solr:solr-solrj")
optional("org.apache.solr:solr-solrj") {
exclude group: "org.slf4j", module: "jcl-over-slf4j"
}
optional("org.apache.tomcat.embed:tomcat-embed-core")
optional("org.apache.tomcat.embed:tomcat-embed-el")
optional("org.apache.tomcat.embed:tomcat-embed-websocket")
optional("org.apache.tomcat:tomcat-jdbc")
optional("org.codehaus.btm:btm")
optional("org.codehaus.btm:btm") {
exclude group: "javax.transaction", module: "jta"
}
optional("org.codehaus.groovy:groovy-templates")
optional("com.github.ben-manes.caffeine:caffeine")
optional("com.github.mxab.thymeleaf.extras:thymeleaf-extras-data-attribute")
optional("com.sendgrid:sendgrid-java")
optional("com.sendgrid:sendgrid-java") {
exclude group: "commons-logging", module: "commons-logging"
}
optional("com.unboundid:unboundid-ldapsdk")
optional("com.zaxxer:HikariCP")
optional("nz.net.ultraq.thymeleaf:thymeleaf-layout-dialect")
optional("org.aspectj:aspectjweaver")
optional("org.eclipse.jetty:jetty-webapp")
optional("org.eclipse.jetty:jetty-webapp") {
exclude group: "javax.servlet", module: "javax.servlet-api"
}
optional("org.eclipse.jetty:jetty-reactive-httpclient")
optional("org.eclipse.jetty.websocket:javax-websocket-server-impl") {
exclude(group: "org.eclipse.jetty", module: "jetty-jndi")
optional("org.eclipse.jetty.websocket:javax-websocket-server-impl") {
exclude group: "javax.annotation", module: "javax.annotation-api"
exclude group: "javax.servlet", module: "javax.servlet-api"
exclude group: "javax.websocket", module: "javax.websocket-api"
exclude group: "javax.websocket", module: "javax.websocket-client-api"
exclude group: "org.eclipse.jetty", module: "jetty-jndi"
}
optional("org.ehcache:ehcache")
optional("org.elasticsearch.client:elasticsearch-rest-client")
optional("org.elasticsearch.client:elasticsearch-rest-high-level-client")
optional("org.elasticsearch.client:elasticsearch-rest-client") {
exclude group: "commons-logging", module: "commons-logging"
}
optional("org.elasticsearch.client:elasticsearch-rest-high-level-client") {
exclude group: "commons-logging", module: "commons-logging"
}
optional("org.flywaydb:flyway-core")
optional("org.freemarker:freemarker")
optional("org.glassfish.jersey.core:jersey-server")
@ -86,16 +118,36 @@ dependencies {
optional("org.glassfish.jersey.containers:jersey-container-servlet")
optional("org.glassfish.jersey.ext:jersey-spring5")
optional("org.glassfish.jersey.media:jersey-media-json-jackson")
optional("org.hibernate:hibernate-core")
optional("org.hibernate:hibernate-jcache")
optional("org.hibernate:hibernate-core") {
exclude group: "javax.activation", module: "javax.activation-api"
exclude group: "javax.persistence", module: "javax.persistence-api"
exclude group: "javax.xml.bind", module: "jaxb-api"
exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec"
}
optional("org.hibernate:hibernate-jcache") {
exclude group: "javax.activation", module: "javax.activation-api"
exclude group: "javax.persistence", module: "javax.persistence-api"
exclude group: "javax.xml.bind", module: "jaxb-api"
exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec"
}
optional("org.hibernate.validator:hibernate-validator")
optional("org.infinispan:infinispan-component-annotations")
optional("org.infinispan:infinispan-jcache")
optional("org.infinispan:infinispan-spring5-embedded")
optional("org.infinispan:infinispan-jcache") {
exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec"
}
optional("org.infinispan:infinispan-spring5-embedded") {
exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec"
}
optional("org.influxdb:influxdb-java")
optional("org.jooq:jooq")
optional("org.liquibase:liquibase-core")
optional("org.messaginghub:pooled-jms")
optional("org.jooq:jooq") {
exclude group: "javax.xml.bind", module: "jaxb-api"
}
optional("org.liquibase:liquibase-core") {
exclude group: "javax.xml.bind", module: "jaxb-api"
}
optional("org.messaginghub:pooled-jms") {
exclude group: "org.apache.geronimo.specs", module: "geronimo-jms_2.0_spec"
}
optional("org.mongodb:mongodb-driver-reactivestreams")
optional("org.mongodb:mongodb-driver-sync")
optional("org.quartz-scheduler:quartz")
@ -115,7 +167,9 @@ dependencies {
optional("org.springframework.data:spring-data-couchbase")
optional("org.springframework.data:spring-data-jpa")
optional("org.springframework.data:spring-data-rest-webmvc")
optional("org.springframework.data:spring-data-cassandra")
optional("org.springframework.data:spring-data-cassandra") {
exclude group: "org.slf4j", module: "jcl-over-slf4j"
}
optional("org.springframework.data:spring-data-elasticsearch") {
exclude group: "org.elasticsearch.client", module: "transport"
}
@ -129,7 +183,9 @@ dependencies {
optional("org.springframework.hateoas:spring-hateoas")
optional("org.springframework.security:spring-security-acl")
optional("org.springframework.security:spring-security-config")
optional("org.springframework.security:spring-security-data")
optional("org.springframework.security:spring-security-data") {
exclude group: "javax.xml.bind", module: "jaxb-api"
}
optional("org.springframework.security:spring-security-oauth2-client")
optional("org.springframework.security:spring-security-oauth2-jose")
optional("org.springframework.security:spring-security-oauth2-resource-server")
@ -139,7 +195,9 @@ dependencies {
optional("org.springframework.session:spring-session-core")
optional("org.springframework.session:spring-session-data-mongodb")
optional("org.springframework.session:spring-session-data-redis")
optional("org.springframework.session:spring-session-hazelcast")
optional("org.springframework.session:spring-session-hazelcast") {
exclude group: "javax.annotation", module: "javax.annotation-api"
}
optional("org.springframework.session:spring-session-jdbc")
optional("org.springframework.amqp:spring-rabbit")
optional("org.springframework.kafka:spring-kafka")
@ -187,5 +245,6 @@ dependencies {
testImplementation("org.testcontainers:testcontainers")
testImplementation("org.yaml:snakeyaml")
testRuntimeOnly("jakarta.management.j2ee:jakarta.management.j2ee-api")
testRuntimeOnly("org.jetbrains.kotlin:kotlin-reflect")
}

View File

@ -35,13 +35,16 @@ dependencies {
implementation("org.apache.maven:maven-model")
implementation("org.apache.maven:maven-resolver-provider") {
exclude group: "com.google.guava", module: "guava"
exclude group: "javax.inject", module: "javax.inject"
}
implementation("org.apache.maven.resolver:maven-resolver-connector-basic")
implementation("org.apache.maven.resolver:maven-resolver-transport-file")
implementation("org.apache.maven.resolver:maven-resolver-transport-http") {
exclude group: "org.slf4j", module: "jcl-over-slf4j"
}
implementation("org.apache.maven:maven-settings-builder")
implementation("org.apache.maven:maven-settings-builder") {
exclude group: "javax.inject", module: "javax.inject"
}
implementation("org.codehaus.groovy:groovy")
implementation("org.slf4j:slf4j-simple")
implementation("org.sonatype.plexus:plexus-sec-dispatcher")

View File

@ -24,7 +24,9 @@ dependencies {
intTestImplementation(project(":spring-boot-project:spring-boot-autoconfigure"))
intTestImplementation(project(":spring-boot-project:spring-boot-test"))
intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
intTestImplementation("org.apache.httpcomponents:httpclient")
intTestImplementation("org.apache.httpcomponents:httpclient") {
exclude group: "commons-logging", module: "commons-logging"
}
intTestImplementation("org.assertj:assertj-core")
intTestImplementation("org.awaitility:awaitility")
intTestImplementation("org.junit.jupiter:junit-jupiter")
@ -32,9 +34,15 @@ dependencies {
intTestRuntimeOnly("org.springframework:spring-web")
optional("javax.servlet:javax.servlet-api")
optional("jakarta.persistence:jakarta.persistence-api")
optional("jakarta.servlet:jakarta.servlet-api")
optional("org.apache.derby:derby")
optional("org.hibernate:hibernate-core")
optional("org.hibernate:hibernate-core") {
exclude group: "javax.activation", module:"javax.activation-api"
exclude group: "javax.persistence", module:"javax.persistence-api"
exclude group: "javax.xml.bind", module:"jaxb-api"
exclude group: "org.jboss.spec.javax.transaction", module:"jboss-transaction-api_1.2_spec"
}
optional("org.springframework:spring-jdbc")
optional("org.springframework:spring-orm")
optional("org.springframework:spring-web")

View File

@ -69,13 +69,21 @@ dependencies {
implementation("io.micrometer:micrometer-core")
implementation("io.projectreactor.netty:reactor-netty-http")
implementation("io.undertow:undertow-core")
implementation("jakarta.persistence:jakarta.persistence-api")
implementation("jakarta.servlet:jakarta.servlet-api")
implementation("org.apache.commons:commons-dbcp2")
implementation("org.apache.commons:commons-dbcp2") {
exclude group: "commons-logging", module: "commons-logging"
}
implementation("org.apache.kafka:kafka-streams")
implementation("org.apache.tomcat.embed:tomcat-embed-core")
implementation("org.assertj:assertj-core")
implementation("org.glassfish.jersey.core:jersey-server")
implementation("org.hibernate:hibernate-jcache")
implementation("org.hibernate:hibernate-jcache") {
exclude group: "javax.activation", module: "javax.activation-api"
exclude group: "javax.persistence", module: "javax.persistence-api"
exclude group: "javax.xml.bind", module: "jaxb-api"
exclude group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec"
}
implementation("org.springframework:spring-orm")
implementation("org.springframework:spring-test")
implementation("org.springframework:spring-web")
@ -85,7 +93,11 @@ dependencies {
implementation("org.springframework.data:spring-data-redis")
implementation("org.springframework.data:spring-data-r2dbc")
implementation("org.springframework.kafka:spring-kafka")
implementation("org.springframework.restdocs:spring-restdocs-restassured")
implementation("org.springframework.restdocs:spring-restdocs-restassured") {
exclude group: "commons-logging", module: "commons-logging"
exclude group: "javax.activation", module: "activation"
exclude group: "javax.xml.bind", module: "jaxb-api"
}
implementation("org.springframework.restdocs:spring-restdocs-webtestclient")
implementation("org.springframework.security:spring-security-config")
implementation("org.springframework.security:spring-security-web")

View File

@ -34,6 +34,13 @@ bom {
]
}
}
library("Jakarta Inject", "1.0.5") {
group("jakarta.inject") {
modules = [
"jakarta.inject-api"
]
}
}
library("JLine", "2.11") {
prohibit("[2.12,)") {
because "it contains breaking changes"

View File

@ -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")

View File

@ -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")

View File

@ -11,7 +11,9 @@ dependencies {
api("com.fasterxml.jackson.module:jackson-module-parameter-names")
api("net.java.dev.jna:jna-platform")
api("org.apache.commons:commons-compress:1.19")
api("org.apache.httpcomponents:httpclient")
api("org.apache.httpcomponents:httpclient") {
exclude(group: "commons-logging", module: "commons-logging")
}
api("org.springframework:spring-core")
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))

View File

@ -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")

View File

@ -27,7 +27,9 @@ dependencies {
implementation("org.apache.commons:commons-compress")
implementation("org.springframework:spring-core")
optional("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50")
optional("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50") {
exclude(group: "commons-logging", module: "commons-logging")
}
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
testImplementation("org.assertj:assertj-core")

View File

@ -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")
}

View File

@ -21,8 +21,14 @@ dependencies {
implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-buildpack-platform"))
implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools"))
implementation("org.apache.maven.shared:maven-common-artifact-filters")
implementation("org.apache.maven:maven-plugin-api")
implementation("org.apache.maven.shared:maven-common-artifact-filters") {
exclude(group: "javax.enterprise", module: "cdi-api")
exclude(group: "javax.inject", module: "javax.inject")
}
implementation("org.apache.maven:maven-plugin-api") {
exclude(group: "javax.enterprise", module: "cdi-api")
exclude(group: "javax.inject", module: "javax.inject")
}
intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-buildpack-platform"))
intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools"))
@ -33,7 +39,10 @@ dependencies {
intTestImplementation("org.testcontainers:testcontainers")
intTestImplementation("org.testcontainers:junit-jupiter")
mavenOptionalImplementation("org.apache.maven.plugins:maven-shade-plugin")
mavenOptionalImplementation("org.apache.maven.plugins:maven-shade-plugin") {
exclude(group: "javax.enterprise", module: "cdi-api")
exclude(group: "javax.inject", module: "javax.inject")
}
runtimeOnly("org.sonatype.plexus:plexus-build-api")

View File

@ -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")

View File

@ -36,32 +36,52 @@ dependencies {
optional("io.rsocket:rsocket-core")
optional("io.rsocket:rsocket-transport-netty")
optional("io.undertow:undertow-servlet") {
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec"
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.3_spec"
exclude group: "org.jboss.spec.javax.servlet", module: "jboss-servlet-api_4.0_spec"
}
optional("javax.jms:javax.jms-api")
optional("javax.servlet:javax.servlet-api")
optional("jakarta.jms:jakarta.jms-api")
optional("jakarta.servlet:jakarta.servlet-api")
optional("jakarta.transaction:jakarta.transaction-api")
optional("junit:junit")
optional("org.apache.commons:commons-dbcp2")
optional("org.apache.httpcomponents:httpclient")
optional("org.apache.commons:commons-dbcp2") {
exclude(group: "commons-logging", module: "commons-logging")
}
optional("org.apache.httpcomponents:httpclient") {
exclude(group: "commons-logging", module: "commons-logging")
}
optional("org.apache.logging.log4j:log4j-api")
optional("org.apache.logging.log4j:log4j-core")
optional("org.apache.tomcat.embed:tomcat-embed-core")
optional("org.apache.tomcat.embed:tomcat-embed-jasper")
optional("org.apache.tomcat:tomcat-jdbc")
optional("org.assertj:assertj-core")
optional("org.codehaus.btm:btm")
optional("org.codehaus.btm:btm") {
exclude(group: "javax.transaction", module: "jta")
}
optional("org.codehaus.groovy:groovy")
optional("org.codehaus.groovy:groovy-xml")
optional("org.eclipse.jetty:jetty-servlets")
optional("org.eclipse.jetty:jetty-util")
optional("org.eclipse.jetty:jetty-webapp")
optional("org.eclipse.jetty:jetty-alpn-conscrypt-server")
optional("org.eclipse.jetty.http2:http2-server")
optional("org.eclipse.jetty:jetty-webapp") {
exclude(group: "javax.servlet", module: "javax.servlet-api")
}
optional("org.eclipse.jetty:jetty-alpn-conscrypt-server") {
exclude(group: "javax.servlet", module: "javax.servlet-api")
}
optional("org.eclipse.jetty.http2:http2-server") {
exclude(group: "javax.servlet", module: "javax.servlet-api")
}
optional("org.hamcrest:hamcrest-library")
optional("org.hibernate:hibernate-core")
optional("org.hibernate:hibernate-core") {
exclude(group: "javax.activation", module: "javax.activation-api")
exclude(group: "javax.persistence", module: "javax.persistence-api")
exclude(group: "javax.xml.bind", module: "jaxb-api")
exclude(group: "org.jboss.spec.javax.transaction", module: "jboss-transaction-api_1.2_spec")
}
optional("org.hibernate.validator:hibernate-validator")
optional("org.liquibase:liquibase-core")
optional("org.liquibase:liquibase-core") {
exclude(group: "javax.xml.bind", module: "jaxb-api")
}
optional("org.slf4j:jul-to-slf4j")
optional("org.slf4j:slf4j-api")
optional("org.springframework:spring-messaging")
@ -78,7 +98,9 @@ dependencies {
optional("org.jetbrains.kotlin:kotlin-stdlib")
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
testImplementation("com.google.appengine:appengine-api-1.0-sdk")
testImplementation("com.google.appengine:appengine-api-1.0-sdk") {
exclude group: "javax.inject", module: "javax.inject"
}
testImplementation("com.h2database:h2")
testImplementation("com.ibm.db2:jcc")
testImplementation("com.jayway.jsonpath:json-path")
@ -87,13 +109,18 @@ dependencies {
testImplementation("com.squareup.okhttp3:okhttp")
testImplementation("com.sun.xml.messaging.saaj:saaj-impl")
testImplementation("io.projectreactor:reactor-test")
testImplementation("javax.xml.ws:jaxws-api")
testImplementation("jakarta.persistence:jakarta.persistence-api")
testImplementation("jakarta.xml.ws:jakarta.xml.ws-api")
testImplementation("mysql:mysql-connector-java")
testImplementation("net.sourceforge.jtds:jtds")
testImplementation("org.apache.derby:derby")
testImplementation("org.apache.httpcomponents:httpasyncclient")
testImplementation("org.apache.httpcomponents:httpasyncclient") {
exclude group: "commons-logging", module: "commons-logging"
}
testImplementation("org.awaitility:awaitility")
testImplementation("org.firebirdsql.jdbc:jaybird-jdk18")
testImplementation("org.firebirdsql.jdbc:jaybird-jdk18") {
exclude group: "javax.resource", module: "connector-api"
}
testImplementation("org.hsqldb:hsqldb")
testImplementation("org.junit.jupiter:junit-jupiter")
testImplementation("org.mariadb.jdbc:mariadb-java-client")

View File

@ -21,7 +21,9 @@ dependencies {
intTestImplementation(enforcedPlatform(project(path: ":spring-boot-project:spring-boot-parent")))
intTestImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))
intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
intTestImplementation("org.apache.httpcomponents:httpasyncclient")
intTestImplementation("org.apache.httpcomponents:httpasyncclient") {
exclude group: "commons-logging", module: "commons-logging"
}
intTestImplementation("org.awaitility:awaitility")
intTestImplementation("org.testcontainers:junit-jupiter")
intTestImplementation("org.testcontainers:testcontainers")

View File

@ -17,7 +17,9 @@ configurations {
dependencies {
intTestImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))
intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
intTestImplementation("org.apache.httpcomponents:httpasyncclient")
intTestImplementation("org.apache.httpcomponents:httpasyncclient") {
exclude group: "commons-logging", module: "commons-logging"
}
intTestImplementation("org.awaitility:awaitility")
intTestImplementation("org.springframework:spring-web")

View File

@ -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"
}
}

View File

@ -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"
}
}

View File

@ -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")

View File

@ -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"))

View File

@ -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"
}
}

View File

@ -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"))
}

View File

@ -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"))

View File

@ -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"))

View File

@ -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")

View File

@ -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"
}
}

View File

@ -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"
}
}

View File

@ -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"
}
}

View File

@ -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"))

View File

@ -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"
}
}

View File

@ -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"
}
}

View File

@ -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"
}
}

View File

@ -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"
}
}

View File

@ -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"))

View File

@ -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"
}
}

View File

@ -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"
}
}

View File

@ -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"
}
}