spring-boot/spring-boot-project/spring-boot-cli/build.gradle
Andy Wilkinson 5e4a502b2d Merge branch '2.4.x' into 2.5.x
Closes gh-28661
2021-11-12 20:31:25 +00:00

201 lines
6.9 KiB
Groovy

plugins {
id "java"
id "org.springframework.boot.deployed"
id "org.springframework.boot.conventions"
id "org.springframework.boot.integration-test"
}
description = "Spring Boot CLI"
configurations {
dependenciesBom
loader
testRepository
}
dependencies {
compileOnly(project(":spring-boot-project:spring-boot"))
compileOnly("jakarta.servlet:jakarta.servlet-api")
compileOnly("org.codehaus.groovy:groovy-templates")
compileOnly("org.springframework:spring-web")
dependenciesBom(project(path: ":spring-boot-project:spring-boot-dependencies", configuration: "effectiveBom"))
implementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools"))
implementation("com.vaadin.external.google:android-json")
implementation("jline:jline")
implementation("net.sf.jopt-simple:jopt-simple")
implementation("org.apache.httpcomponents:httpclient") {
exclude group: "commons-logging", module: "commons-logging"
}
implementation("org.apache.maven:maven-model")
implementation("org.apache.maven:maven-resolver-provider") {
exclude group: "com.google.guava", module: "guava"
exclude group: "javax.inject", module: "javax.inject"
}
implementation("org.apache.maven.resolver:maven-resolver-connector-basic")
implementation("org.apache.maven.resolver:maven-resolver-transport-file")
implementation("org.apache.maven.resolver:maven-resolver-transport-http") {
exclude group: "org.slf4j", module: "jcl-over-slf4j"
}
implementation("org.apache.maven:maven-settings-builder") {
exclude group: "javax.inject", module: "javax.inject"
}
implementation("org.codehaus.groovy:groovy")
implementation("org.slf4j:slf4j-simple")
implementation("org.sonatype.plexus:plexus-sec-dispatcher")
implementation("org.sonatype.sisu:sisu-inject-plexus") {
exclude group: "javax.enterprise", module: "cdi-api"
exclude group: "org.sonatype.sisu", module: "sisu-inject-bean"
}
implementation("org.springframework:spring-core")
implementation("org.springframework.security:spring-security-crypto")
intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-loader-tools"))
intTestImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
intTestImplementation("org.assertj:assertj-core")
intTestImplementation("org.junit.jupiter:junit-jupiter")
intTestImplementation("org.springframework:spring-core")
loader(project(":spring-boot-project:spring-boot-tools:spring-boot-loader"))
testCompileOnly("org.apache.tomcat.embed:tomcat-embed-core")
testImplementation(project(":spring-boot-project:spring-boot"))
testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support"))
testImplementation(project(":spring-boot-project:spring-boot-test"))
testImplementation("org.assertj:assertj-core")
testImplementation("org.codehaus.groovy:groovy-templates")
testImplementation("org.junit.jupiter:junit-jupiter")
testImplementation("org.mockito:mockito-core")
testImplementation("org.mockito:mockito-junit-jupiter")
testImplementation("org.springframework:spring-test")
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-actuator", configuration: "mavenRepository"))
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-amqp", configuration: "mavenRepository"))
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-aop", configuration: "mavenRepository"))
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-artemis", configuration: "mavenRepository"))
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-batch", configuration: "mavenRepository"))
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-data-jpa", configuration: "mavenRepository"))
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-jdbc", configuration: "mavenRepository"))
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-integration", configuration: "mavenRepository"))
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-security", configuration: "mavenRepository"))
testRepository(project(path: ":spring-boot-project:spring-boot-starters:spring-boot-starter-web", configuration: "mavenRepository"))
}
task syncSpringBootDependenciesBom(type: Sync) {
destinationDir = file("${buildDir}/generated-resources/org/springframework/boot/cli/compiler/dependencies")
from configurations.dependenciesBom
}
task syncTestRepository(type: Sync) {
destinationDir = file("${buildDir}/test-repository")
from configurations.testRepository
}
sourceSets {
main {
output.dir("${buildDir}/generated-resources", builtBy: "syncSpringBootDependenciesBom")
}
}
test {
dependsOn syncTestRepository
}
task fullJar(type: Jar) {
dependsOn configurations.loader
classifier = "full"
entryCompression = "stored"
from(configurations.runtimeClasspath) {
into "BOOT-INF/lib"
}
from(sourceSets.main.output) {
into "BOOT-INF/classes"
}
from {
zipTree(configurations.loader.singleFile).matching {
exclude "META-INF/LICENSE.txt"
exclude "META-INF/NOTICE.txt"
}
}
manifest {
attributes(
"Class-Loader": "groovy.lang.GroovyClassLoader",
"Main-Class": "org.springframework.boot.loader.JarLauncher",
"Start-Class": "org.springframework.boot.cli.SpringCli"
)
}
}
def configureArchive(archive) {
archive.classifier = "bin"
archive.into "spring-${project.version}"
archive.from(fullJar) {
rename {
it.replace("-full", "")
}
into "lib/"
}
archive.from(file("src/main/content")) {
dirMode = 0755
fileMode = 0644
}
archive.from(file("src/main/executablecontent")) {
fileMode = 0755
}
}
task zip(type: Zip) {
classifier = "bin"
configureArchive it
}
intTest {
dependsOn syncTestRepository, zip
}
task tar(type: Tar) {
compression = "gzip"
archiveExtension = "tar.gz"
configureArchive it
}
task scoopManifest(type: org.springframework.boot.build.cli.ScoopManifest) {
dependsOn zip
outputDir = file("${buildDir}/scoop")
template = file("src/main/scoop/springboot.json")
archive = zip.archiveFile
}
def scoopManifestArtifact = artifacts.add("archives", file("${buildDir}/scoop/springboot.json")) {
type "json"
classifier "scoop"
builtBy "scoopManifest"
}
task homebrewFormula(type: org.springframework.boot.build.cli.HomebrewFormula) {
dependsOn tar
outputDir = file("${buildDir}/homebrew")
template = file("src/main/homebrew/spring-boot.rb")
archive = tar.archiveFile
}
def homebrewFormulaArtifact = artifacts.add("archives", file("${buildDir}/homebrew/spring-boot.rb")) {
type "rb"
classifier "homebrew"
builtBy "homebrewFormula"
}
publishing {
publications {
getByName("maven") {
artifact fullJar
artifact tar
artifact zip
artifact scoopManifestArtifact
artifact homebrewFormulaArtifact
}
}
}