Rework dep mgmt again to avoid consumers picking up strict constraints

This paves the way for publishing Gradle module metadata once the
problem caused by snapshot versions and our two-step publication
process has been addressed.

See gh-19609
pull/19762/head
Andy Wilkinson 5 years ago
parent 5ba0a9120e
commit 714a187d8f

@ -53,6 +53,10 @@ 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"

@ -0,0 +1,60 @@
/*
* 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));
}
}

@ -30,6 +30,7 @@ import org.apache.maven.artifact.versioning.VersionRange;
import org.gradle.api.InvalidUserCodeException;
import org.gradle.api.InvalidUserDataException;
import org.gradle.api.artifacts.dsl.DependencyHandler;
import org.gradle.api.plugins.JavaPlatformPlugin;
import org.gradle.util.ConfigureUtil;
import org.springframework.boot.build.bom.Library.Exclusion;
@ -51,10 +52,10 @@ public class BomExtension {
private final List<Library> libraries = new ArrayList<Library>();
private final DependencyHandler dependencyHandler;
private final UpgradeHandler upgradeHandler = new UpgradeHandler();
private final DependencyHandler dependencyHandler;
public BomExtension(DependencyHandler dependencyHandler) {
this.dependencyHandler = dependencyHandler;
}
@ -107,13 +108,16 @@ public class BomExtension {
for (Group group : library.getGroups()) {
for (Module module : group.getModules()) {
this.putArtifactVersionProperty(group.getId(), module.getName(), library.getVersionProperty());
this.dependencyHandler.getConstraints().add("api",
this.dependencyHandler.getConstraints().add(JavaPlatformPlugin.API_CONFIGURATION_NAME,
createDependencyNotation(group.getId(), module.getName(), library.getVersion()));
}
for (String bomImport : group.getBoms()) {
this.putArtifactVersionProperty(group.getId(), bomImport, library.getVersionProperty());
this.dependencyHandler.add("api", this.dependencyHandler
.enforcedPlatform(createDependencyNotation(group.getId(), bomImport, library.getVersion())));
String bomDependency = createDependencyNotation(group.getId(), bomImport, library.getVersion());
this.dependencyHandler.add(JavaPlatformPlugin.API_CONFIGURATION_NAME,
this.dependencyHandler.platform(bomDependency));
this.dependencyHandler.add(BomPlugin.API_ENFORCED_CONFIGURATION_NAME,
this.dependencyHandler.enforcedPlatform(bomDependency));
}
}
}

@ -67,6 +67,8 @@ import org.springframework.util.FileCopyUtils;
*/
public class BomPlugin implements Plugin<Project> {
static final String API_ENFORCED_CONFIGURATION_NAME = "apiEnforced";
@Override
public void apply(Project project) {
PluginContainer plugins = project.getPlugins();
@ -75,6 +77,7 @@ public class BomPlugin implements Plugin<Project> {
plugins.apply(JavaPlatformPlugin.class);
JavaPlatformExtension javaPlatform = project.getExtensions().getByType(JavaPlatformExtension.class);
javaPlatform.allowDependencies();
createApiEnforcedConfiguration(project);
BomExtension bom = project.getExtensions().create("bom", BomExtension.class, project.getDependencies());
project.getTasks().create("bomrCheck", CheckBom.class, bom);
project.getTasks().create("bomrUpgrade", UpgradeBom.class, bom);
@ -114,6 +117,19 @@ public class BomPlugin implements Plugin<Project> {
});
}
private void createApiEnforcedConfiguration(Project project) {
Configuration apiEnforced = project.getConfigurations().create(API_ENFORCED_CONFIGURATION_NAME,
(configuration) -> {
configuration.setCanBeConsumed(false);
configuration.setCanBeResolved(false);
configuration.setVisible(false);
});
project.getConfigurations().getByName(JavaPlatformPlugin.ENFORCED_API_ELEMENTS_CONFIGURATION_NAME)
.extendsFrom(apiEnforced);
project.getConfigurations().getByName(JavaPlatformPlugin.ENFORCED_RUNTIME_ELEMENTS_CONFIGURATION_NAME)
.extendsFrom(apiEnforced);
}
private static final class PublishingCustomizer {
private final Project project;

@ -29,6 +29,7 @@ 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;
@ -46,6 +47,7 @@ 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);

@ -5,6 +5,7 @@ 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'
}
@ -16,12 +17,13 @@ configurations {
}
dependencies {
asciidoctorExtensions enforcedPlatform(project(':spring-boot-project:spring-boot-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')
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
implementation project(':spring-boot-project:spring-boot')
implementation project(':spring-boot-project:spring-boot-autoconfigure')
implementation 'com.fasterxml.jackson.core:jackson-databind'
@ -29,7 +31,7 @@ dependencies {
implementation 'org.springframework:spring-core'
implementation 'org.springframework:spring-context'
optional enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
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,11 @@ plugins {
description = 'Spring Boot Actuator'
dependencies {
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
api platform(project(':spring-boot-project:spring-boot-dependencies'))
implementation project(':spring-boot-project:spring-boot')
optional enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
optional platform(project(':spring-boot-project:spring-boot-dependencies'))
optional 'com.fasterxml.jackson.core:jackson-databind'
optional 'com.hazelcast:hazelcast'
optional 'com.hazelcast:hazelcast-spring'

@ -4,6 +4,7 @@ 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'
}
@ -11,10 +12,9 @@ description = 'Spring Boot AutoConfigure'
dependencies {
api project(':spring-boot-project:spring-boot')
api platform(project(':spring-boot-project:spring-boot-dependencies'))
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
optional enforcedPlatform(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.couchbase.client:couchbase-spring-cache'
@ -148,7 +148,7 @@ dependencies {
optional 'org.thymeleaf.extras:thymeleaf-extras-springsecurity5'
optional 'redis.clients:jedis'
testImplementation enforcedPlatform(project(':spring-boot-project:spring-boot-parent'))
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,6 +3,7 @@ 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"
@ -15,16 +16,14 @@ configurations {
dependencies {
compileOnly project(':spring-boot-project:spring-boot')
compileOnly 'jakarta.servlet:jakarta.servlet-api'
compileOnly 'org.codehaus.groovy:groovy-templates'
compileOnly 'org.springframework:spring-web'
dependenciesBom project(path: ':spring-boot-project:spring-boot-dependencies', configuration: 'effectiveBom')
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-parent'))
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'
implementation 'net.sf.jopt-simple:jopt-simple'
@ -51,7 +50,7 @@ dependencies {
implementation 'org.springframework:spring-core'
implementation 'org.springframework.security:spring-security-crypto'
intTestImplementation enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
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,6 +4,7 @@ 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'
}
@ -14,13 +15,13 @@ configurations {
}
dependencies {
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
api platform(project(':spring-boot-project:spring-boot-dependencies'))
implementation project(':spring-boot-project:spring-boot')
implementation project(':spring-boot-project:spring-boot-autoconfigure')
intTestDependencies project(':spring-boot-project:spring-boot-starters:spring-boot-starter-web')
intTestImplementation enforcedPlatform(project(':spring-boot-project:spring-boot-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')
@ -31,7 +32,7 @@ dependencies {
intTestImplementation 'net.bytebuddy:byte-buddy'
intTestRuntimeOnly 'org.springframework:spring-web'
optional enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
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'

@ -2,12 +2,14 @@ plugins {
id 'java-library'
id 'maven-publish'
id 'org.springframework.boot.conventions'
id 'org.springframework.boot.internal-dependency-management'
}
description = 'Spring Boot Properties Migrator'
dependencies {
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
api platform(project(':spring-boot-project:spring-boot-dependencies'))
implementation project(':spring-boot-project:spring-boot')
implementation project(':spring-boot-project:spring-boot-tools:spring-boot-configuration-metadata')

@ -5,7 +5,7 @@ plugins {
description = "Starter for JMS messaging using Apache ActiveMQ"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Spring Boot's Actuator which provides production ready features to help you monitor and manage your application"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Spring AMQP and Rabbit MQ"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for aspect-oriented programming with Spring AOP and AspectJ"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for JMS messaging using Apache Artemis"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Spring Batch"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Spring Framework's caching support"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Spring Cloud Connectors which simplifies connecting to services in cloud platforms like Cloud Foundry and Heroku"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
api platform(project(':spring-boot-project:spring-boot-dependencies'))
api project(':spring-boot-project:spring-boot-starters:spring-boot-starter')
api 'org.springframework.cloud:spring-cloud-spring-service-connector'
api 'org.springframework.cloud:spring-cloud-cloudfoundry-connector'

@ -5,7 +5,7 @@ plugins {
description = "Starter for using Cassandra distributed database and Spring Data Cassandra Reactive"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Cassandra distributed database and Spring Data Cassandra"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Couchbase document-oriented database and Spring Data Couchbase Reactive"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Couchbase document-oriented database and Spring Data Couchbase"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Elasticsearch search and analytics engine and Spring Data Elasticsearch"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Spring Data JDBC"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,12 +5,12 @@ plugins {
description = "Starter for using Spring Data JPA with Hibernate"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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'
api 'jakarta.persistence:jakarta.persistence-api'
api ('org.hibernate:hibernate-core') {
api ('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'

@ -5,7 +5,7 @@ plugins {
description = "Starter for using Spring Data LDAP"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using MongoDB document-oriented database and Spring Data MongoDB Reactive"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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'

@ -5,7 +5,7 @@ plugins {
description = "Starter for using MongoDB document-oriented database and Spring Data MongoDB"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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'
api ('org.springframework.data:spring-data-mongodb') {

@ -5,7 +5,7 @@ plugins {
description = "Starter for using Neo4j graph database and Spring Data Neo4j"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,6 +5,6 @@ plugins {
description = "Starter for using Redis key-value data store with Spring Data Redis reactive and the Lettuce client"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Redis key-value data store with Spring Data Redis and the Lettuce client"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for exposing Spring Data repositories over REST using Spring Data REST"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using the Apache Solr search platform with Spring Data Solr"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for building MVC web applications using FreeMarker views"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for building MVC web applications using Groovy Templates views"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for building hypermedia-based RESTful web application with Spring MVC and Spring HATEOAS"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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'
api 'org.springframework.plugin:spring-plugin-core'

@ -5,7 +5,7 @@ plugins {
description = "Starter for using Spring Integration"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using JDBC with the HikariCP connection pool"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for building RESTful web applications using JAX-RS and Jersey. An alternative to spring-boot-starter-web"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Jetty as the embedded servlet container. An alternative to spring-boot-starter-tomcat"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ 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 enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for reading and writing json"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for JTA transactions using Atomikos"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for JTA transactions using Bitronix"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Log4j2 for logging. An alternative to spring-boot-starter-logging"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for logging using Logback. Default logging starter"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Java Mail and Spring Framework's email sending support"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for building web applications using Mustache views"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Spring Security's OAuth2/OpenID Connect client features"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Spring Security's OAuth2 resource server features"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using the Quartz scheduler"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,6 @@ plugins {
description = "Starter for using Reactor Netty as the embedded reactive HTTP server."
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
api platform(project(':spring-boot-project:spring-boot-dependencies'))
api 'io.projectreactor.netty:reactor-netty'
}

@ -5,7 +5,7 @@ plugins {
description = "Starter for building RSocket clients and servers"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Spring Security"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for testing Spring Boot applications with libraries including JUnit, Hamcrest and Mockito"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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')

@ -5,7 +5,7 @@ plugins {
description = "Starter for building MVC web applications using Thymeleaf views"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Tomcat as the embedded servlet container. Default servlet container starter used by spring-boot-starter-web"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Undertow as the embedded servlet container. An alternative to spring-boot-starter-tomcat"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Java Bean Validation with Hibernate Validator"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for using Spring Web Services"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for building web, including RESTful, applications using Spring MVC. Uses Tomcat as the default embedded container"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for building WebFlux applications using Spring Framework's Reactive Web support"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Starter for building WebSocket applications using Spring Framework's WebSocket support"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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,7 @@ plugins {
description = "Core starter, including auto-configuration support, logging and YAML"
dependencies {
api enforcedPlatform(project(':spring-boot-project:spring-boot-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')

@ -2,18 +2,20 @@ 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 {
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
api platform(project(':spring-boot-project:spring-boot-dependencies'))
implementation project(':spring-boot-project:spring-boot')
implementation project(':spring-boot-project:spring-boot-test')
implementation project(':spring-boot-project:spring-boot-autoconfigure')
optional enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
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'
@ -46,7 +48,6 @@ dependencies {
optional 'org.mongodb:mongodb-driver-async'
optional 'org.mongodb:mongodb-driver-reactivestreams'
testImplementation enforcedPlatform(project(':spring-boot-project:spring-boot-parent'))
testImplementation project(':spring-boot-project:spring-boot-tools:spring-boot-test-support')
testImplementation 'ch.qos.logback:logback-classic'
testImplementation 'com.fasterxml.jackson.module:jackson-module-parameter-names'

@ -3,16 +3,17 @@ 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 {
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
api platform(project(':spring-boot-project:spring-boot-dependencies'))
implementation project(':spring-boot-project:spring-boot')
optional enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
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'
@ -36,7 +37,6 @@ dependencies {
optional 'org.springframework:spring-webflux'
optional 'net.sourceforge.htmlunit:htmlunit'
testImplementation enforcedPlatform(project(':spring-boot-project:spring-boot-parent'))
testImplementation project(':spring-boot-project:spring-boot-tools:spring-boot-test-support')
testImplementation 'io.mockk:mockk'
testImplementation 'javax.json:javax.json-api'

@ -2,6 +2,7 @@ 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'
@ -19,10 +20,11 @@ dependencies {
antUnit "org.apache.ant:ant-antunit:1.3"
antIvy "org.apache.ivy:ivy:2.4.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}"
implementation enforcedPlatform(project(":spring-boot-project:spring-boot-dependencies"))
implementation project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools")
implementation "org.springframework:spring-core"
}

@ -2,12 +2,14 @@ plugins {
id 'java-library'
id 'maven-publish'
id 'org.springframework.boot.conventions'
id 'org.springframework.boot.internal-dependency-management'
}
description = 'Spring Boot Configuration Metadata'
dependencies {
implementation enforcedPlatform(project(path: ":spring-boot-project:spring-boot-parent"))
api platform(project(path: ":spring-boot-project:spring-boot-parent"))
implementation "com.vaadin.external.google:android-json"
testImplementation "org.junit.jupiter:junit-jupiter"

@ -4,6 +4,7 @@ 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'
}
@ -25,14 +26,16 @@ repositories {
}
dependencies {
api platform(project(':spring-boot-project:spring-boot-dependencies'))
asciidoctorExtensions 'io.spring.asciidoctor:spring-asciidoctor-extensions-block-switch:0.3.0.RELEASE'
implementation platform(project(':spring-boot-project:spring-boot-dependencies'))
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 enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
optional platform(project(':spring-boot-project:spring-boot-dependencies'))
optional 'org.jetbrains.kotlin:kotlin-gradle-plugin:1.3.50'
testImplementation 'org.junit.jupiter:junit-jupiter'

@ -2,6 +2,7 @@ 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'
@ -13,11 +14,11 @@ configurations {
}
dependencies {
api platform(project(':spring-boot-project:spring-boot-dependencies'))
api "org.apache.commons:commons-compress:1.19"
compileOnly "ch.qos.logback:logback-classic"
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
implementation "org.springframework:spring-core"
loader project(":spring-boot-project:spring-boot-tools:spring-boot-loader")

@ -2,14 +2,15 @@ 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 {
compileOnly "org.springframework:spring-core"
api platform(project(":spring-boot-project:spring-boot-dependencies"))
implementation enforcedPlatform(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,6 +2,7 @@ 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'
}
@ -13,25 +14,25 @@ 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'
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-parent'))
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'
intTestImplementation enforcedPlatform(project(':spring-boot-project:spring-boot-parent'))
intTestImplementation platform(project(':spring-boot-project:spring-boot-parent'))
intTestImplementation 'org.apache.maven.shared:maven-invoker'
intTestImplementation 'org.assertj:assertj-core'
intTestImplementation 'org.junit.jupiter:junit-jupiter'
optional enforcedPlatform(project(':spring-boot-project:spring-boot-parent'))
optional platform(project(':spring-boot-project:spring-boot-parent'))
optional 'org.apache.maven.plugins:maven-shade-plugin'
runtimeOnly 'org.sonatype.plexus:plexus-build-api'
testImplementation enforcedPlatform(project(':spring-boot-project:spring-boot-parent'))
testImplementation 'org.assertj:assertj-core'
testImplementation 'org.junit.jupiter:junit-jupiter'
testImplementation 'org.mockito:mockito-core'

@ -1,11 +1,14 @@
plugins {
id 'java-library'
id 'org.springframework.boot.conventions'
id 'org.springframework.boot.internal-dependency-management'
}
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 "junit:junit"
@ -17,7 +20,6 @@ dependencies {
compileOnly "org.springframework.data:spring-data-redis"
compileOnly "org.testcontainers:testcontainers"
implementation enforcedPlatform(project(path: ":spring-boot-project:spring-boot-parent"))
implementation "org.apache.maven.resolver:maven-resolver-connector-basic"
implementation "org.apache.maven.resolver:maven-resolver-impl"
implementation "org.apache.maven:maven-resolver-provider"

@ -4,21 +4,22 @@ 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 enforcedPlatform(project(':spring-boot-project: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'
implementation enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
optional enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
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'

@ -29,7 +29,7 @@ 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 enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
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,6 +1,7 @@
plugins {
id 'java'
id 'org.springframework.boot.conventions'
id 'org.springframework.boot.internal-dependency-management'
}
description = 'Spring Boot Atmosphere smoke test'

@ -8,18 +8,18 @@ description = 'Spring Boot Jetty JSP smoke test'
dependencies {
compileOnly 'jakarta.servlet:jakarta.servlet-api'
compileOnly project(':spring-boot-project:spring-boot-starters:spring-boot-starter-jetty')
implementation(project(':spring-boot-project:spring-boot-starters:spring-boot-starter-web')) {
exclude module: 'spring-boot-starter-tomcat'
}
providedRuntime enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
providedRuntime platform(project(':spring-boot-project:spring-boot-dependencies'))
providedRuntime('org.eclipse.jetty:apache-jsp') {
exclude group: 'javax.annotation', module: 'javax.annotation-api'
}
runtimeOnly 'javax.servlet: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')
}

@ -10,7 +10,7 @@ dependencies {
exclude module: 'spring-boot-starter-tomcat'
}
providedCompile enforcedPlatform(project(':spring-boot-project:spring-boot-dependencies'))
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')

Loading…
Cancel
Save