/* * 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" id "org.springframework.boot.docker-test" id "de.undercouch.download" } description = "Spring Boot Loader Integration Tests" def oracleJdkVersion = "17.0.8" def oracleJdkArch = "aarch64".equalsIgnoreCase(System.getProperty("os.arch")) ? "aarch64" : "x64" configurations { app } dependencies { app project(path: ":spring-boot-project:spring-boot-dependencies", configuration: "mavenRepository") app project(path: ":spring-boot-project:spring-boot-tools:spring-boot-gradle-plugin", configuration: "mavenRepository") app project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-web", configuration: "mavenRepository") app project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter", configuration: "mavenRepository") app("org.bouncycastle:bcprov-jdk18on:1.78.1") dockerTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support-docker")) dockerTestImplementation(project(":spring-boot-project:spring-boot-starters:spring-boot-starter-test")) dockerTestImplementation("org.testcontainers:junit-jupiter") dockerTestImplementation("org.testcontainers:testcontainers") } tasks.register("syncMavenRepository", Sync) { from configurations.app into layout.buildDirectory.dir("docker-test-maven-repository") } tasks.register("syncAppSource", org.springframework.boot.build.SyncAppSource) { sourceDirectory = file("spring-boot-loader-tests-app") destinationDirectory = file(layout.buildDirectory.dir("spring-boot-loader-tests-app")) } tasks.register("buildApp", GradleBuild) { dependsOn syncAppSource, syncMavenRepository dir = layout.buildDirectory.dir("spring-boot-loader-tests-app") startParameter.buildCacheEnabled = false tasks = ["build"] } tasks.register("syncSignedJarAppSource", org.springframework.boot.build.SyncAppSource) { sourceDirectory = file("spring-boot-loader-tests-signed-jar") destinationDirectory = file(layout.buildDirectory.dir("spring-boot-loader-tests-signed-jar")) } tasks.register("buildSignedJarApp", GradleBuild) { dependsOn syncSignedJarAppSource, syncMavenRepository dir = layout.buildDirectory.dir("spring-boot-loader-tests-signed-jar") startParameter.buildCacheEnabled = false tasks = ["build"] } tasks.register("downloadJdk", Download) { def destFolder = new File(project.gradle.gradleUserHomeDir, "caches/springboot/downloads/jdk/oracle") destFolder.mkdirs() src "https://download.oracle.com/java/17/archive/jdk-${oracleJdkVersion}_linux-${oracleJdkArch}_bin.tar.gz" dest destFolder tempAndMove true overwrite false retries 3 } tasks.register("syncJdkDownloads", Sync) { dependsOn downloadJdk from "${project.gradle.gradleUserHomeDir}/caches/springboot/downloads/jdk/oracle/" include "jdk-${oracleJdkVersion}_linux-${oracleJdkArch}_bin.tar.gz" into layout.buildDirectory.dir("downloads/jdk/oracle/") } tasks.named("processDockerTestResources").configure { dependsOn syncJdkDownloads } tasks.named("dockerTest").configure { dependsOn buildApp, buildSignedJarApp }