/* * 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" }