You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
108 lines
3.2 KiB
108 lines
3.2 KiB
plugins { |
|
id "java-library" |
|
id "org.springframework.boot.deployed" |
|
} |
|
|
|
description = "Spring Boot Loader Tools" |
|
|
|
Provider<Directory> generatedResources = layout.buildDirectory.dir("generated-resources/main") |
|
|
|
configurations { |
|
loader { |
|
extendsFrom dependencyManagement |
|
transitive = false |
|
} |
|
loaderClassic { |
|
extendsFrom dependencyManagement |
|
transitive = false |
|
} |
|
jarmode { |
|
extendsFrom dependencyManagement |
|
transitive = false |
|
} |
|
all { |
|
resolutionStrategy { |
|
eachDependency { dependency -> |
|
// Downgrade Spring Framework as Gradle cannot cope with 6.1.0-M1's |
|
// multi-version jar files with bytecode in META-INF/versions/21 |
|
if (dependency.requested.group.equals("org.springframework")) { |
|
dependency.useVersion("$springFramework60xVersion") |
|
} |
|
// We manage the version of commons-compress here rather than |
|
// in spring-boot-parent to minimize conflicts with Testcontainers |
|
if (dependency.requested.group.equals("org.apache.commons") |
|
&& dependency.requested.name.equals("commons-compress")) { |
|
dependency.useVersion("$commonsCompressVersion") |
|
} |
|
} |
|
} |
|
} |
|
} |
|
|
|
dependencies { |
|
api("org.apache.commons:commons-compress:$commonsCompressVersion") |
|
api("org.springframework:spring-core") |
|
|
|
compileOnly("ch.qos.logback:logback-classic") |
|
|
|
loader(project(":spring-boot-project:spring-boot-tools:spring-boot-loader")) |
|
loaderClassic(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-classic")) |
|
|
|
jarmode(project(":spring-boot-project:spring-boot-tools:spring-boot-jarmode-layertools")) |
|
|
|
testImplementation("org.assertj:assertj-core") |
|
testImplementation("org.junit.jupiter:junit-jupiter") |
|
testImplementation("org.mockito:mockito-core") |
|
testImplementation("org.zeroturnaround:zt-zip:1.13") |
|
} |
|
|
|
task reproducibleLoaderJar(type: Jar) { |
|
dependsOn configurations.loader |
|
from { |
|
zipTree(configurations.loader.incoming.files.singleFile).matching { |
|
exclude "META-INF/LICENSE.txt" |
|
exclude "META-INF/NOTICE.txt" |
|
exclude "META-INF/spring-boot.properties" |
|
} |
|
} |
|
reproducibleFileOrder = true |
|
preserveFileTimestamps = false |
|
archiveFileName = "spring-boot-loader.jar" |
|
destinationDirectory = file(generatedResources.map {it.dir("META-INF/loader") }) |
|
} |
|
|
|
task reproducibleLoaderClassicJar(type: Jar) { |
|
dependsOn configurations.loaderClassic |
|
from { |
|
zipTree(configurations.loaderClassic.incoming.files.singleFile).matching { |
|
exclude "META-INF/LICENSE.txt" |
|
exclude "META-INF/NOTICE.txt" |
|
exclude "META-INF/spring-boot.properties" |
|
} |
|
} |
|
reproducibleFileOrder = true |
|
preserveFileTimestamps = false |
|
archiveFileName = "spring-boot-loader-classic.jar" |
|
destinationDirectory = file(generatedResources.map { it.dir("META-INF/loader") }) |
|
} |
|
|
|
task layerToolsJar(type: Sync) { |
|
dependsOn configurations.jarmode |
|
from { |
|
file(configurations.jarmode.incoming.files.singleFile) |
|
} |
|
rename({ "spring-boot-jarmode-layertools.jar" }) |
|
into(file(generatedResources.map { it.dir("META-INF/jarmode") })) |
|
} |
|
|
|
sourceSets { |
|
main { |
|
output.dir(generatedResources, builtBy: [layerToolsJar, reproducibleLoaderJar, reproducibleLoaderClassicJar]) |
|
} |
|
} |
|
|
|
compileJava { |
|
if ((!project.hasProperty("toolchainVersion")) && JavaVersion.current() == JavaVersion.VERSION_1_8) { |
|
options.compilerArgs += ['-Xlint:-sunapi', '-XDenableSunApiLintControl'] |
|
} |
|
}
|
|
|