Require dependency on s-b-dependencies to use its constraints

Previously, Spring Boot's modules published Gradle Module Metadata
(GMM) the declared a platform dependency on spring-boot-dependencies.
This provided versions for each module's own dependencies but also had
they unwanted side-effect of pulling in spring-boot-dependencies
constraints which would influence the version of other dependencies
declared in the same configuration. This was undesirable as users
should be able to opt in to this level of dependency management, either
by using the dependency management plugin or by using Gradle's built-in
support via a platform dependency on spring-boot-dependencies.

This commit reworks how Spring Boot's build uses
spring-boot-dependencies and spring-boot-parent to provide its own
dependency management. Configurations that aren't seen by consumers are
configured to extend a dependencyManagement configuration that has an
enforced platform dependency on spring-boot-parent. This enforces
spring-boot-parent's version constraints on Spring Boot's build without
making them visible to consumers. To ensure that the versions that
Spring Boot has been built against are visible to consumers, the
Maven publication that produces pom files and GMM for the published
modules is configured to use the resolved versions from the module's
runtime classpath.

Fixes gh-21911
pull/22035/head
Andy Wilkinson 4 years ago
parent e30b8bf742
commit 0de466e06e

@ -54,10 +54,6 @@ gradlePlugin {
id = "org.springframework.boot.conventions"
implementationClass = "org.springframework.boot.build.ConventionsPlugin"
}
dependencyManagementPlugin {
id = "org.springframework.boot.internal-dependency-management"
implementationClass = "org.springframework.boot.build.InternalDependencyManagementPlugin"
}
deployedPlugin {
id = "org.springframework.boot.deployed"
implementationClass = "org.springframework.boot.build.DeployedPlugin"

@ -1,60 +0,0 @@
/*
* Copyright 2020-2020 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* https://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.springframework.boot.build;
import java.util.Collections;
import org.gradle.api.Plugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.ConfigurationContainer;
import org.gradle.api.artifacts.Dependency;
import org.gradle.api.plugins.JavaBasePlugin;
import org.springframework.boot.build.optional.OptionalDependenciesPlugin;
/**
* Plugin to apply internal dependency management to Spring Boot's projects. Uses a custom
* configuration to enforce a platform for Spring Boot's own build. This prevents the
* enforced (strict) constraints from being visible to external consumers.
*
* @author Andy Wilkinson
*/
public class InternalDependencyManagementPlugin implements Plugin<Project> {
@Override
public void apply(Project project) {
project.getPlugins().withType(JavaBasePlugin.class, (java) -> configureDependencyManagement(project));
}
private void configureDependencyManagement(Project project) {
ConfigurationContainer configurations = project.getConfigurations();
Configuration dependencyManagement = configurations.create("internalDependencyManagement", (configuration) -> {
configuration.setVisible(false);
configuration.setCanBeConsumed(false);
configuration.setCanBeResolved(false);
});
configurations.matching((configuration) -> configuration.getName().endsWith("Classpath"))
.all((configuration) -> configuration.extendsFrom(dependencyManagement));
Dependency springBootParent = project.getDependencies().enforcedPlatform(project.getDependencies()
.project(Collections.singletonMap("path", ":spring-boot-project:spring-boot-parent")));
dependencyManagement.getDependencies().add(springBootParent);
project.getPlugins().withType(OptionalDependenciesPlugin.class, (optionalDependencies) -> configurations
.getByName(OptionalDependenciesPlugin.OPTIONAL_CONFIGURATION_NAME).extendsFrom(dependencyManagement));
}
}

@ -17,6 +17,7 @@ package org.springframework.boot.build;
import java.io.File;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.TreeMap;
@ -25,8 +26,12 @@ import java.util.function.Consumer;
import io.spring.javaformat.gradle.FormatTask;
import io.spring.javaformat.gradle.SpringJavaFormatPlugin;
import org.gradle.api.Project;
import org.gradle.api.artifacts.Configuration;
import org.gradle.api.artifacts.ConfigurationContainer;
import org.gradle.api.artifacts.Dependency;
import org.gradle.api.artifacts.DependencySet;
import org.gradle.api.plugins.JavaBasePlugin;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.quality.CheckstyleExtension;
import org.gradle.api.plugins.quality.CheckstylePlugin;
import org.gradle.api.tasks.bundling.Jar;
@ -36,6 +41,7 @@ import org.gradle.api.tasks.testing.Test;
import org.gradle.testretry.TestRetryPlugin;
import org.gradle.testretry.TestRetryTaskExtension;
import org.springframework.boot.build.optional.OptionalDependenciesPlugin;
import org.springframework.boot.build.testing.TestFailuresPlugin;
/**
@ -60,6 +66,7 @@ import org.springframework.boot.build.testing.TestFailuresPlugin;
* <li>{@code Implementation-Title}
* <li>{@code Implementation-Version}
* </ul>
* <li>{@code spring-boot-parent} is used for dependency management</li>
* </ul>
*
* <p/>
@ -80,6 +87,7 @@ class JavaConventions {
configureJavadocConventions(project);
configureTestConventions(project);
configureJarManifestConventions(project);
configureDependencyManagement(project);
});
}
@ -164,4 +172,22 @@ class JavaConventions {
.add(project.getDependencies().create("io.spring.javaformat:spring-javaformat-checkstyle:" + version));
}
private void configureDependencyManagement(Project project) {
ConfigurationContainer configurations = project.getConfigurations();
Configuration dependencyManagement = configurations.create("dependencyManagement", (configuration) -> {
configuration.setVisible(false);
configuration.setCanBeConsumed(false);
configuration.setCanBeResolved(false);
});
configurations
.matching((configuration) -> configuration.getName().endsWith("Classpath")
|| JavaPlugin.ANNOTATION_PROCESSOR_CONFIGURATION_NAME.equals(configuration.getName()))
.all((configuration) -> configuration.extendsFrom(dependencyManagement));
Dependency springBootParent = project.getDependencies().enforcedPlatform(project.getDependencies()
.project(Collections.singletonMap("path", ":spring-boot-project:spring-boot-parent")));
dependencyManagement.getDependencies().add(springBootParent);
project.getPlugins().withType(OptionalDependenciesPlugin.class, (optionalDependencies) -> configurations
.getByName(OptionalDependenciesPlugin.OPTIONAL_CONFIGURATION_NAME).extendsFrom(dependencyManagement));
}
}

@ -18,6 +18,7 @@ package org.springframework.boot.build;
import org.apache.maven.artifact.repository.MavenArtifactRepository;
import org.gradle.api.Project;
import org.gradle.api.attributes.Usage;
import org.gradle.api.plugins.JavaPlugin;
import org.gradle.api.plugins.JavaPluginExtension;
import org.gradle.api.publish.PublishingExtension;
@ -40,8 +41,12 @@ import org.gradle.api.publish.maven.plugins.MavenPublishPlugin;
* it.
* <li>The poms of all {@link MavenPublication Maven publications} are customized to meet
* Maven Central's requirements.
* <li>If the {@link JavaPlugin Java plugin} has also been applied, creation of Javadoc
* and source jars is enabled.
* <li>If the {@link JavaPlugin Java plugin} has also been applied:
* <ul>
* <li>Creation of Javadoc and source jars is enabled.
* <li>Publication metadata (poms and Gradle module metadata) is configured to use
* resolved versions.
* </ul>
* </ul>
*
* <p/>
@ -62,7 +67,7 @@ class MavenPublishingConventions {
});
}
publishing.getPublications().withType(MavenPublication.class)
.all((mavenPublication) -> customizePom(mavenPublication.getPom(), project));
.all((mavenPublication) -> customizeMavenPublication(mavenPublication, project));
project.getPlugins().withType(JavaPlugin.class).all((javaPlugin) -> {
JavaPluginExtension extension = project.getExtensions().getByType(JavaPluginExtension.class);
extension.withJavadocJar();
@ -71,6 +76,12 @@ class MavenPublishingConventions {
});
}
private void customizeMavenPublication(MavenPublication publication, Project project) {
customizePom(publication.getPom(), project);
project.getPlugins().withType(JavaPlugin.class)
.all((javaPlugin) -> customizeJavaMavenPublication(publication, project));
}
private void customizePom(MavenPom pom, Project project) {
pom.getUrl().set("https://spring.io/projects/spring-boot");
pom.getName().set(project.provider(project::getName));
@ -82,6 +93,13 @@ class MavenPublishingConventions {
pom.issueManagement(this::customizeIssueManagement);
}
private void customizeJavaMavenPublication(MavenPublication publication, Project project) {
publication.versionMapping((strategy) -> strategy.usage(Usage.JAVA_API, (mappingStrategy) -> mappingStrategy
.fromResolutionOf(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME)));
publication.versionMapping((strategy) -> strategy.usage(Usage.JAVA_RUNTIME,
(mappingStrategy) -> mappingStrategy.fromResolutionResult()));
}
private void customizeOrganization(MavenPomOrganization organization) {
organization.getName().set("Pivotal Software, Inc.");
organization.getUrl().set("https://spring.io");

@ -29,7 +29,6 @@ import org.gradle.api.plugins.PluginContainer;
import org.springframework.boot.build.ConventionsPlugin;
import org.springframework.boot.build.DeployedPlugin;
import org.springframework.boot.build.InternalDependencyManagementPlugin;
import org.springframework.boot.build.classpath.CheckClasspathForConflicts;
import org.springframework.boot.build.classpath.CheckClasspathForProhibitedDependencies;
import org.springframework.util.StringUtils;
@ -47,7 +46,6 @@ public class StarterPlugin implements Plugin<Project> {
plugins.apply(DeployedPlugin.class);
plugins.apply(JavaLibraryPlugin.class);
plugins.apply(ConventionsPlugin.class);
plugins.apply(InternalDependencyManagementPlugin.class);
StarterMetadata starterMetadata = project.getTasks().create("starterMetadata", StarterMetadata.class);
ConfigurationContainer configurations = project.getConfigurations();
Configuration runtimeClasspath = configurations.getByName(JavaPlugin.RUNTIME_CLASSPATH_CONFIGURATION_NAME);

@ -51,6 +51,17 @@ class ConventionsPluginTests {
void setup(@TempDir File projectDir) throws IOException {
this.projectDir = projectDir;
this.buildFile = new File(this.projectDir, "build.gradle");
File settingsFile = new File(this.projectDir, "settings.gradle");
try (PrintWriter out = new PrintWriter(new FileWriter(settingsFile))) {
out.println("include ':spring-boot-project:spring-boot-parent'");
}
File springBootParent = new File(this.projectDir, "spring-boot-project/spring-boot-parent/build.gradle");
springBootParent.getParentFile().mkdirs();
try (PrintWriter out = new PrintWriter(new FileWriter(springBootParent))) {
out.println("plugins {");
out.println(" id 'java-platform'");
out.println("}");
}
}
@Test

@ -5,22 +5,21 @@ plugins {
id "org.springframework.boot.auto-configuration"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
id "org.springframework.boot.optional-dependencies"
}
description = "Spring Boot Actuator AutoConfigure"
configurations {
asciidoctorExtensions
asciidoctorExtensions {
extendsFrom dependencyManagement
}
documentation
}
dependencies {
asciidoctorExtensions(platform(project(":spring-boot-project:spring-boot-dependencies")))
asciidoctorExtensions("org.springframework.restdocs:spring-restdocs-asciidoctor")
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-actuator"))
api(project(":spring-boot-project:spring-boot"))
@ -29,7 +28,6 @@ dependencies {
implementation("com.fasterxml.jackson.core:jackson-databind")
implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310")
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
optional("ch.qos.logback:logback-classic")
optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml")
optional("com.github.ben-manes.caffeine:caffeine")

@ -9,10 +9,8 @@ plugins {
description = "Spring Boot Actuator"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot"))
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
optional("com.fasterxml.jackson.core:jackson-databind")
optional("com.github.ben-manes.caffeine:caffeine")
optional("com.hazelcast:hazelcast")

@ -4,7 +4,6 @@ plugins {
id "org.springframework.boot.auto-configuration"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
id "org.springframework.boot.optional-dependencies"
}
@ -12,9 +11,7 @@ description = "Spring Boot AutoConfigure"
dependencies {
api(project(":spring-boot-project:spring-boot"))
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
optional("com.atomikos:transactions-jdbc")
optional("com.atomikos:transactions-jta")
optional("com.fasterxml.jackson.core:jackson-databind")
@ -151,7 +148,6 @@ dependencies {
optional("org.thymeleaf.extras:thymeleaf-extras-springsecurity5")
optional("redis.clients:jedis")
testImplementation(platform(project(":spring-boot-project:spring-boot-parent")))
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
testImplementation(project(":spring-boot-project:spring-boot-test"))
testImplementation("ch.qos.logback:logback-classic")

@ -3,7 +3,6 @@ plugins {
id "org.springframework.boot.deployed"
id "org.springframework.boot.conventions"
id "org.springframework.boot.integration-test"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot CLI"
@ -22,7 +21,6 @@ dependencies {
dependenciesBom(project(path: ":spring-boot-project:spring-boot-dependencies", configuration: "effectiveBom"))
implementation(platform(project(":spring-boot-project:spring-boot-parent")))
implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools"))
implementation("com.vaadin.external.google:android-json")
implementation("jline:jline")
@ -50,7 +48,6 @@ dependencies {
implementation("org.springframework:spring-core")
implementation("org.springframework.security:spring-security-crypto")
intTestImplementation(platform(project(":spring-boot-project:spring-boot-dependencies")))
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.assertj:assertj-core")

@ -4,18 +4,18 @@ plugins {
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.integration-test"
id "org.springframework.boot.internal-dependency-management"
id "org.springframework.boot.optional-dependencies"
}
description = "Spring Boot Developer Tools"
configurations {
intTestDependencies
intTestDependencies {
extendsFrom dependencyManagement
}
}
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot"))
api(project(":spring-boot-project:spring-boot-autoconfigure"))
@ -32,7 +32,6 @@ dependencies {
intTestRuntimeOnly("org.springframework:spring-web")
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
optional("javax.servlet:javax.servlet-api")
optional("org.apache.derby:derby")
optional("org.hibernate:hibernate-core")

@ -10,7 +10,9 @@ description = "Spring Boot Docs"
configurations {
actuatorApiDocumentation
asciidoctorExtensions
asciidoctorExtensions {
extendsFrom dependencyManagement
}
autoConfiguration
configurationProperties
gradlePluginDocumentation
@ -40,7 +42,6 @@ plugins.withType(EclipsePlugin) {
dependencies {
actuatorApiDocumentation(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure", configuration: "documentation"))
asciidoctorExtensions(platform(project(":spring-boot-project:spring-boot-parent")))
asciidoctorExtensions("io.spring.asciidoctor:spring-asciidoctor-extensions-spring-boot")
asciidoctorExtensions(project(path: ":spring-boot-project:spring-boot-actuator-autoconfigure"))
asciidoctorExtensions(project(path: ":spring-boot-project:spring-boot-autoconfigure"))

@ -2,7 +2,6 @@ plugins {
id "java-platform"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot Parent"

@ -2,13 +2,11 @@ plugins {
id "java-library"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot Properties Migrator"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot"))
api(project(":spring-boot-project:spring-boot-tools:spring-boot-configuration-metadata"))

@ -5,7 +5,6 @@ plugins {
description = "Starter for JMS messaging using Apache ActiveMQ"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework:spring-jms")
api("org.apache.activemq:activemq-broker") {

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Boot's Actuator which provides production ready features to help you monitor and manage your application"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-actuator-autoconfigure"))
api("io.micrometer:micrometer-core")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring AMQP and Rabbit MQ"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework:spring-messaging")
api("org.springframework.amqp:spring-rabbit")

@ -5,7 +5,6 @@ plugins {
description = "Starter for aspect-oriented programming with Spring AOP and AspectJ"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework:spring-aop")
api("org.aspectj:aspectjweaver")

@ -5,7 +5,6 @@ plugins {
description = "Starter for JMS messaging using Apache Artemis"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("jakarta.jms:jakarta.jms-api")
api("jakarta.json:jakarta.json-api")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Batch"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-jdbc"))
api("org.springframework.batch:spring-batch-core")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Framework's caching support"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework:spring-context-support")
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Cassandra distributed database and Spring Data Cassandra Reactive"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework:spring-tx")
api("org.springframework.data:spring-data-cassandra") {

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Cassandra distributed database and Spring Data Cassandra"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework:spring-tx")
api("org.springframework.data:spring-data-cassandra") {

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Couchbase document-oriented database and Spring Data Couchbase Reactive"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("io.projectreactor:reactor-core")
api("io.reactivex:rxjava-reactive-streams")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Couchbase document-oriented database and Spring Data Couchbase"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework.data:spring-data-couchbase") {
exclude group: "com.couchbase.client", module: "encryption"

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Elasticsearch search and analytics engine and Spring Data Elasticsearch"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework.data:spring-data-elasticsearch") {
exclude group: "org.elasticsearch.client", module: "transport"

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Data JDBC"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-jdbc"))
api("org.springframework.data:spring-data-jdbc")
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Data JPA with Hibernate"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-aop"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-jdbc"))
api("jakarta.transaction:jakarta.transaction-api")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Data LDAP"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework.data:spring-data-ldap")
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for using MongoDB document-oriented database and Spring Data MongoDB Reactive"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("io.projectreactor:reactor-core")
api("org.mongodb:mongodb-driver-reactivestreams")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using MongoDB document-oriented database and Spring Data MongoDB"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.mongodb:mongodb-driver-sync")
api("org.springframework.data:spring-data-mongodb")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Neo4j graph database and Spring Data Neo4j"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework.data:spring-data-neo4j")
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Data R2DBC"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework.data:spring-data-r2dbc")
api("io.r2dbc:r2dbc-spi")

@ -5,6 +5,5 @@ plugins {
description = "Starter for using Redis key-value data store with Spring Data Redis reactive and the Lettuce client"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-redis"))
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Redis key-value data store with Spring Data Redis and the Lettuce client"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework.data:spring-data-redis")
api("io.lettuce:lettuce-core")

@ -5,7 +5,6 @@ plugins {
description = "Starter for exposing Spring Data repositories over REST using Spring Data REST"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))
api("org.springframework.data:spring-data-rest-webmvc")
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for using the Apache Solr search platform with Spring Data Solr"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.apache.solr:solr-solrj") {
exclude group: "org.slf4j", module: "jcl-over-slf4j"

@ -5,7 +5,6 @@ plugins {
description = "Starter for building MVC web applications using FreeMarker views"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.freemarker:freemarker")
api("org.springframework:spring-context-support")

@ -5,7 +5,6 @@ plugins {
description = "Starter for building MVC web applications using Groovy Templates views"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))
api("org.codehaus.groovy:groovy-templates")
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for building hypermedia-based RESTful web application with Spring MVC and Spring HATEOAS"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))
api("org.springframework.hateoas:spring-hateoas")
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Integration"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-aop"))
api("org.springframework.integration:spring-integration-core")
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for using JDBC with the HikariCP connection pool"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("com.zaxxer:HikariCP")
api("org.springframework:spring-jdbc")

@ -5,7 +5,6 @@ plugins {
description = "Starter for building RESTful web applications using JAX-RS and Jersey. An alternative to spring-boot-starter-web"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-json"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-tomcat"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-validation"))

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Jetty as the embedded servlet container. An alternative to spring-boot-starter-tomcat"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api("jakarta.servlet:jakarta.servlet-api")
api("jakarta.websocket:jakarta.websocket-api")
api("org.eclipse.jetty:jetty-servlets")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using jOOQ to access SQL databases. An alternative to spring-boot-starter-data-jpa or spring-boot-starter-jdbc"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-jdbc"))
api("jakarta.activation:jakarta.activation-api")
api("jakarta.xml.bind:jakarta.xml.bind-api")

@ -5,7 +5,6 @@ plugins {
description = "Starter for reading and writing json"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework:spring-web")
api("com.fasterxml.jackson.core:jackson-databind")

@ -5,7 +5,6 @@ plugins {
description = "Starter for JTA transactions using Atomikos"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("com.atomikos:transactions-jms")
api("com.atomikos:transactions-jta")

@ -5,7 +5,6 @@ plugins {
description = "Starter for JTA transactions using Bitronix. Deprecated since 2.3.0"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("jakarta.jms:jakarta.jms-api")
api("jakarta.transaction:jakarta.transaction-api")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Log4j2 for logging. An alternative to spring-boot-starter-logging"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api("org.apache.logging.log4j:log4j-slf4j-impl")
api("org.apache.logging.log4j:log4j-core")
api("org.apache.logging.log4j:log4j-jul")

@ -5,7 +5,6 @@ plugins {
description = "Starter for logging using Logback. Default logging starter"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api("ch.qos.logback:logback-classic")
api("org.apache.logging.log4j:log4j-to-slf4j")
api("org.slf4j:jul-to-slf4j")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Java Mail and Spring Framework's email sending support"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework:spring-context-support")
api("com.sun.mail:jakarta.mail")

@ -5,7 +5,6 @@ plugins {
description = "Starter for building web applications using Mustache views"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("com.samskivert:jmustache")
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Security's OAuth2/OpenID Connect client features"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("com.sun.mail:jakarta.mail")
api("org.springframework.security:spring-security-config")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Security's OAuth2 resource server features"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework.security:spring-security-config")
api("org.springframework.security:spring-security-core")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using the Quartz scheduler"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework:spring-context-support")
api("org.springframework:spring-tx")

@ -5,6 +5,5 @@ plugins {
description = "Starter for using Reactor Netty as the embedded reactive HTTP server."
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api("io.projectreactor.netty:reactor-netty")
}

@ -5,7 +5,6 @@ plugins {
description = "Starter for building RSocket clients and servers"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-json"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-reactor-netty"))

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Security"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.springframework:spring-aop")
api("org.springframework.security:spring-security-config")

@ -5,7 +5,6 @@ plugins {
description = "Starter for testing Spring Boot applications with libraries including JUnit, Hamcrest and Mockito"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-test"))
api(project(":spring-boot-project:spring-boot-test-autoconfigure"))

@ -5,7 +5,6 @@ plugins {
description = "Starter for building MVC web applications using Thymeleaf views"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.thymeleaf:thymeleaf-spring5")
api("org.thymeleaf.extras:thymeleaf-extras-java8time")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Tomcat as the embedded servlet container. Default servlet container starter used by spring-boot-starter-web"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api("jakarta.annotation:jakarta.annotation-api")
api("org.apache.tomcat.embed:tomcat-embed-core") {
exclude group: "org.apache.tomcat", module: "tomcat-annotations-api"

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Undertow as the embedded servlet container. An alternative to spring-boot-starter-tomcat"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api("io.undertow:undertow-core")
api("io.undertow:undertow-servlet") {
exclude group: "org.jboss.spec.javax.annotation", module: "jboss-annotations-api_1.2_spec"

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Java Bean Validation with Hibernate Validator"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api("org.glassfish:jakarta.el")
api("org.hibernate.validator:hibernate-validator")

@ -5,7 +5,6 @@ plugins {
description = "Starter for using Spring Web Services"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))
api("com.sun.xml.messaging.saaj:saaj-impl")
api("jakarta.xml.ws:jakarta.xml.ws-api") {

@ -5,7 +5,6 @@ plugins {
description = "Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-json"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-tomcat"))

@ -5,7 +5,6 @@ plugins {
description = "Starter for building WebFlux applications using Spring Framework's Reactive Web support"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-json"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-reactor-netty"))

@ -5,7 +5,6 @@ plugins {
description = "Starter for building WebSocket applications using Spring Framework's WebSocket support"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))
api("org.springframework:spring-messaging")
api("org.springframework:spring-websocket")

@ -5,7 +5,6 @@ plugins {
description = "Core starter, including auto-configuration support, logging and YAML"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot"))
api(project(":spring-boot-project:spring-boot-autoconfigure"))
api(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-logging"))

@ -2,19 +2,16 @@ plugins {
id "java-library"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
id "org.springframework.boot.optional-dependencies"
}
description = "Spring Boot Test AutoConfigure"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot"))
api(project(":spring-boot-project:spring-boot-test"))
api(project(":spring-boot-project:spring-boot-autoconfigure"))
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
optional("javax.json.bind:javax.json.bind-api")
optional("javax.servlet:javax.servlet-api")
optional("javax.transaction:javax.transaction-api")

@ -3,17 +3,14 @@ plugins {
id "org.jetbrains.kotlin.jvm"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
id "org.springframework.boot.optional-dependencies"
}
description = "Spring Boot Test"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api(project(":spring-boot-project:spring-boot"))
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
optional("com.fasterxml.jackson.core:jackson-databind")
optional("com.google.code.gson:gson")
optional("com.jayway.jsonpath:json-path")

@ -2,7 +2,6 @@ plugins {
id "java-library"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot Antlib"
@ -20,8 +19,6 @@ dependencies {
antUnit "org.apache.ant:ant-antunit:1.3"
antIvy "org.apache.ivy:ivy:2.5.0"
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
compileOnly(project(":spring-boot-project:spring-boot-tools:spring-boot-loader"))
compileOnly("org.apache.ant:ant:${antVersion}")

@ -2,13 +2,11 @@ plugins {
id "java-library"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot Buildpack Platform"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-parent")))
api("com.fasterxml.jackson.core:jackson-databind")
api("com.fasterxml.jackson.module:jackson-module-parameter-names")
api("net.java.dev.jna:jna-platform")

@ -2,7 +2,6 @@ plugins {
id "java-library"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot Configuration Metadata"

@ -4,7 +4,6 @@ plugins {
id "org.asciidoctor.jvm.convert"
id "org.asciidoctor.jvm.pdf"
id "org.springframework.boot.conventions"
id "org.springframework.boot.internal-dependency-management"
id "org.springframework.boot.maven-repository"
id "org.springframework.boot.optional-dependencies"
}
@ -12,7 +11,9 @@ plugins {
description = "Spring Boot Gradle Plugin"
configurations {
asciidoctorExtensions
asciidoctorExtensions {
extendsFrom dependencyManagement
}
documentation
}
@ -26,19 +27,14 @@ repositories {
}
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
asciidoctorExtensions(platform(project(":spring-boot-project:spring-boot-parent")))
asciidoctorExtensions("io.spring.asciidoctor:spring-asciidoctor-extensions-block-switch")
implementation(platform(project(":spring-boot-project:spring-boot-parent")))
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("io.spring.gradle:dependency-management-plugin")
implementation("org.apache.commons:commons-compress")
implementation("org.springframework:spring-core")
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
optional("org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50")
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))

@ -2,14 +2,11 @@ plugins {
id "java-library"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot Layers Tools"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-parent")))
implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader"))
implementation("org.springframework:spring-core")
@ -17,4 +14,3 @@ dependencies {
testImplementation("org.junit.jupiter:junit-jupiter")
testImplementation("org.mockito:mockito-core")
}

@ -2,7 +2,6 @@ plugins {
id "java-library"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot Loader Tools"
@ -10,12 +9,15 @@ description = "Spring Boot Loader Tools"
def generatedResources = "${buildDir}/generated-resources/main"
configurations {
loader
jarmode
loader {
extendsFrom dependencyManagement
}
jarmode {
extendsFrom dependencyManagement
}
}
dependencies {
api(platform(project(":spring-boot-project:spring-boot-parent")))
api("org.apache.commons:commons-compress")
api("org.springframework:spring-core")

@ -2,14 +2,11 @@ plugins {
id "java-library"
id "org.springframework.boot.conventions"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot Loader"
dependencies {
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
compileOnly("org.springframework:spring-core")
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))

@ -2,7 +2,6 @@ plugins {
id "org.asciidoctor.jvm.convert"
id "org.asciidoctor.jvm.pdf"
id "org.springframework.boot.conventions"
id "org.springframework.boot.internal-dependency-management"
id "org.springframework.boot.maven-plugin"
id "org.springframework.boot.optional-dependencies"
}
@ -14,8 +13,6 @@ configurations {
}
dependencies {
api(platform(project(":spring-boot-project:spring-boot-parent")))
compileOnly("org.apache.maven.plugin-tools:maven-plugin-annotations")
compileOnly("org.sonatype.plexus:plexus-build-api")
@ -24,7 +21,6 @@ dependencies {
implementation("org.apache.maven.shared:maven-common-artifact-filters")
implementation("org.apache.maven:maven-plugin-api")
intTestImplementation(platform(project(":spring-boot-project:spring-boot-parent")))
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"))
@ -33,7 +29,6 @@ dependencies {
intTestImplementation("org.junit.jupiter:junit-jupiter")
intTestImplementation("org.testcontainers:testcontainers")
optional(platform(project(":spring-boot-project:spring-boot-parent")))
optional("org.apache.maven.plugins:maven-shade-plugin")
runtimeOnly("org.sonatype.plexus:plexus-build-api")

@ -1,7 +1,6 @@
plugins {
id "java-library"
id "org.springframework.boot.conventions"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot Testing Support"

@ -4,21 +4,17 @@ plugins {
id "org.springframework.boot.conventions"
id "org.springframework.boot.configuration-properties"
id "org.springframework.boot.deployed"
id "org.springframework.boot.internal-dependency-management"
id "org.springframework.boot.optional-dependencies"
}
description = "Spring Boot"
dependencies {
annotationProcessor(platform(project(":spring-boot-project:spring-boot-dependencies")))
annotationProcessor("org.apache.logging.log4j:log4j-core")
api(platform(project(":spring-boot-project:spring-boot-dependencies")))
api("org.springframework:spring-core")
api("org.springframework:spring-context")
optional(platform(project(":spring-boot-project:spring-boot-dependencies")))
optional("ch.qos.logback:logback-classic")
optional("com.atomikos:transactions-jdbc")
optional("com.atomikos:transactions-jms")

@ -6,6 +6,12 @@ plugins {
description = "Spring Boot Deployment Tests"
configurations {
providedRuntime {
extendsFrom dependencyManagement
}
}
dependencies {
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) {
exclude group: "org.hibernate.validator"

@ -6,7 +6,9 @@ plugins {
description = "Spring Boot Ant smoke test"
configurations {
antDependencies
antDependencies {
extendsFrom dependencyManagement
}
testRepository
}
@ -31,7 +33,6 @@ dependencies {
testRepository(project(path: ":spring-boot-project:spring-boot-tools:spring-boot-loader", configuration: "mavenRepository"))
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter", configuration: "mavenRepository"))
testImplementation(platform(project(":spring-boot-project:spring-boot-dependencies")))
testImplementation(project(path: ":spring-boot-project:spring-boot-tools:spring-boot-loader-tools"))
testImplementation("org.assertj:assertj-core")
testImplementation("org.junit.jupiter:junit-jupiter")

@ -1,7 +1,6 @@
plugins {
id "java"
id "org.springframework.boot.conventions"
id "org.springframework.boot.internal-dependency-management"
}
description = "Spring Boot Atmosphere smoke test"

@ -6,7 +6,6 @@ plugins {
description = "Spring Boot Data R2DBC with Flyway smoke test"
dependencies {
implementation(platform(project(":spring-boot-project:spring-boot-parent")))
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-r2dbc"))
runtimeOnly("io.r2dbc:r2dbc-postgresql")

@ -6,7 +6,6 @@ plugins {
description = "Spring Boot Data R2DBC with Liquibase smoke test"
dependencies {
implementation(platform(project(":spring-boot-project:spring-boot-parent")))
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-data-r2dbc"))
runtimeOnly("io.r2dbc:r2dbc-postgresql")

@ -5,6 +5,12 @@ plugins {
description = "Spring Boot Jetty JSP smoke test"
configurations {
providedRuntime {
extendsFrom dependencyManagement
}
}
dependencies {
compileOnly("jakarta.servlet:jakarta.servlet-api")
compileOnly(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-jetty"))
@ -13,7 +19,6 @@ dependencies {
exclude module: "spring-boot-starter-tomcat"
}
providedRuntime(platform(project(":spring-boot-project:spring-boot-dependencies")))
providedRuntime("org.eclipse.jetty:apache-jsp") {
exclude group: "javax.annotation", module: "javax.annotation-api"
}

@ -1,11 +1,11 @@
plugins {
id "java"
// id "org.springframework.boot.conventions"
}
description = "Spring Boot TestNG smoke test"
dependencies {
implementation(platform(project(":spring-boot-project:spring-boot-dependencies")))
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-tomcat"))
implementation("org.springframework:spring-webmvc")

@ -5,6 +5,12 @@ plugins {
description = "Spring Boot Tomcat JSP smoke test"
configurations {
providedRuntime {
extendsFrom dependencyManagement
}
}
dependencies {
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))

@ -5,6 +5,12 @@ plugins {
description = "Spring Boot traditional deployment smoke test"
configurations {
providedRuntime {
extendsFrom dependencyManagement
}
}
dependencies {
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter"))
implementation("org.springframework:spring-webmvc")

@ -5,12 +5,17 @@ plugins {
description = "Spring Boot war smoke test"
configurations {
providedCompile {
extendsFrom dependencyManagement
}
}
dependencies {
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web")) {
exclude module: "spring-boot-starter-tomcat"
}
providedCompile(platform(project(":spring-boot-project:spring-boot-dependencies")))
providedCompile("jakarta.servlet:jakarta.servlet-api")
testImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test"))

@ -5,6 +5,12 @@ plugins {
description = "Spring Boot web JSP smoke test"
configurations {
providedRuntime {
extendsFrom dependencyManagement
}
}
dependencies {
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))

@ -5,6 +5,12 @@ plugins {
description = "Spring Boot web static smoke test"
configurations {
providedRuntime {
extendsFrom dependencyManagement
}
}
dependencies {
implementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-web"))

Loading…
Cancel
Save