mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-23 09:49:01 +00:00
Change `spring-boot-tomcat-runtime` and `spring-boot-jetty-runtime` into starter POMs and reduce the number of dependencies needed for `spring-boot-tomcat` and `spring-boot-jetty`. The runtime starters provide only the jars required to run the embedded server along with the module jar itself (excluding transitive dependencies) and `spring-boot-webserver` (excluding transitive dependencies). The build setup required for an executable jar is slightly different between Maven and Gradle. For Maven, the regular module is put in the `provided` scope. For Gradle, the regular module remains in main configuration and the runtime jar is put in the `providedRuntime` configuration. The reference documentation has been updated to show how to configure things if starters are being used. Manual testing has been performed to ensure that wars build with Maven and Gradle work with both Tomcat and Jetty in both deployed and `java -jar` modes. Closes gh-48175
90 lines
3.0 KiB
Groovy
90 lines
3.0 KiB
Groovy
/*
|
|
* Copyright 2012-present 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.
|
|
*/
|
|
|
|
plugins {
|
|
id "java-library"
|
|
id "org.springframework.boot.auto-configuration"
|
|
id "org.springframework.boot.configuration-properties"
|
|
id "org.springframework.boot.deployed"
|
|
id "org.springframework.boot.optional-dependencies"
|
|
}
|
|
|
|
description = "Spring Boot Tomcat"
|
|
|
|
def tomcatConfigProperties = layout.buildDirectory.dir("tomcat-config-properties")
|
|
|
|
configurations {
|
|
tomcatDistribution
|
|
}
|
|
|
|
dependencies {
|
|
api(project(":module:spring-boot-web-server"))
|
|
api("org.apache.tomcat.embed:tomcat-embed-core") {
|
|
exclude group: "org.apache.tomcat", module: "tomcat-annotations-api"
|
|
}
|
|
|
|
optional(project(":core:spring-boot-autoconfigure"))
|
|
optional(project(":module:spring-boot-actuator-autoconfigure"))
|
|
optional(project(":module:spring-boot-micrometer-metrics"))
|
|
optional("io.micrometer:micrometer-core")
|
|
optional("org.apache.tomcat.embed:tomcat-embed-jasper")
|
|
optional("org.apache.tomcat.embed:tomcat-embed-websocket") {
|
|
exclude group: "org.apache.tomcat", module: "tomcat-annotations-api"
|
|
}
|
|
optional("org.springframework:spring-webflux")
|
|
|
|
runtimeOnly("jakarta.annotation:jakarta.annotation-api")
|
|
|
|
testImplementation(project(":core:spring-boot-test"))
|
|
testImplementation(project(":test-support:spring-boot-test-support"))
|
|
testImplementation(testFixtures(project(":module:spring-boot-web-server")))
|
|
testImplementation(testFixtures(project(":core:spring-boot-autoconfigure")))
|
|
testImplementation("org.apache.httpcomponents.client5:httpclient5")
|
|
|
|
testRuntimeOnly("ch.qos.logback:logback-classic")
|
|
testRuntimeOnly("io.projectreactor:reactor-test")
|
|
testRuntimeOnly("io.projectreactor.netty:reactor-netty-http")
|
|
testRuntimeOnly("org.eclipse.jetty:jetty-client")
|
|
testRuntimeOnly("org.eclipse.jetty.http2:jetty-http2-client")
|
|
testRuntimeOnly("org.eclipse.jetty.http2:jetty-http2-client-transport")
|
|
testRuntimeOnly("org.springframework:spring-webmvc")
|
|
|
|
tomcatDistribution("org.apache.tomcat:tomcat:${tomcatVersion}@zip")
|
|
}
|
|
|
|
tasks.register("extractTomcatConfigProperties", Sync) {
|
|
destinationDir = file(tomcatConfigProperties)
|
|
from {
|
|
zipTree(configurations.tomcatDistribution.incoming.files.singleFile).matching {
|
|
include '**/conf/catalina.properties'
|
|
}.singleFile
|
|
}
|
|
}
|
|
|
|
sourceSets {
|
|
test {
|
|
output.dir(tomcatConfigProperties, builtBy: "extractTomcatConfigProperties")
|
|
}
|
|
}
|
|
|
|
test {
|
|
jvmArgs += "--add-opens=java.base/java.net=ALL-UNNAMED"
|
|
}
|
|
|
|
tasks.named("compileTestJava") {
|
|
options.nullability.checking = "tests"
|
|
}
|