import org.springframework.boot.gradle.tasks.bundling.BootJar plugins { id "java" id "org.springframework.boot" } java { sourceCompatibility = '17' targetCompatibility = '17' } repositories { maven { url "file:${rootDir}/../int-test-maven-repository"} mavenCentral() maven { url "https://repo.spring.io/snapshot" } maven { url "https://repo.spring.io/milestone" } } configurations { app { extendsFrom(configurations.runtimeClasspath) } tomcat { extendsFrom(app) } undertow { extendsFrom(app) } } dependencies { compileOnly("jakarta.servlet:jakarta.servlet-api:6.0.0") implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)) implementation("org.springframework.boot:spring-boot-starter-web") { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' } implementation("org.springframework.boot:spring-boot-starter-actuator") app(files(sourceSets.main.output)) app('org.springframework.boot:spring-boot-starter-web') { exclude group: 'org.springframework.boot', module: 'spring-boot-starter-tomcat' } tomcat("org.springframework.boot:spring-boot-starter-tomcat") undertow("org.springframework.boot:spring-boot-starter-undertow") } ["tomcat", "undertow"].each { webServer -> def configurer = { task -> task.mainClass = "org.springframework.boot.sni.server.SniServerApplication" task.classpath = configurations.getByName(webServer) task.archiveClassifier = webServer task.targetJavaVersion = project.getTargetCompatibility() } tasks.register("${webServer}ServerApp", BootJar, configurer) }