/* * 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. */ import org.springframework.boot.gradle.tasks.bundling.BootJar import org.springframework.boot.gradle.tasks.bundling.BootWar plugins { id "java" id "org.springframework.boot" id "war" } java { sourceCompatibility = '17' targetCompatibility = '17' } repositories { maven { url = layout.projectDirectory.dir("../test-repository") } mavenCentral() spring.mavenRepositoriesExcludingBootGroup() } configurations { app { extendsFrom(configurations.runtimeClasspath) } jetty { extendsFrom(app) } tomcat { extendsFrom(app) } } tasks.register("resourcesJar", Jar) { jar -> def nested = project.resources.text.fromString("nested") from(nested) { into "META-INF/resources/" rename (".*", "nested-meta-inf-resource.txt") } if (!isWindows()) { def encodedName = project.resources.text.fromString("encoded-name") from(encodedName) { into "META-INF/resources/" rename (".*", 'nested-reserved-!#\\$%&()*+,:=?@[]-meta-inf-resource.txt') } } archiveClassifier = 'resources' } dependencies { compileOnly("org.springframework:spring-web") compileOnly("org.springframework.boot:spring-boot-jetty") implementation(platform(org.springframework.boot.gradle.plugin.SpringBootPlugin.BOM_COORDINATES)) implementation("org.springframework.boot:spring-boot-starter") app(files(resourcesJar)) app(files(sourceSets.main.output)) app("org.springframework:spring-web") jetty("org.springframework.boot:spring-boot-starter-jetty") tomcat("org.springframework.boot:spring-boot-starter-tomcat") } static boolean isWindows() { return File.separatorChar == '\\' } ["jetty", "tomcat"].each { webServer -> def configurer = { task -> task.dependsOn resourcesJar task.mainClass = "com.example.ResourceHandlingApplication" task.classpath = configurations.getByName(webServer) task.archiveClassifier = webServer task.targetJavaVersion = java.targetCompatibility } tasks.register("${webServer}BootJar", BootJar, configurer) tasks.register("${webServer}BootWar", BootWar, configurer) }