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.
200 lines
6.9 KiB
200 lines
6.9 KiB
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 |
|
} |
|
} |
|
} |
|
|
|
|