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.
194 lines
6.7 KiB
194 lines
6.7 KiB
plugins { |
|
id 'java' |
|
id 'org.springframework.boot.deployed' |
|
id 'org.springframework.boot.conventions' |
|
id 'org.springframework.boot.integration-test' |
|
id 'org.springframework.boot.internal-dependency-management' |
|
} |
|
|
|
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 platform(project(':spring-boot-project:spring-boot-parent')) |
|
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' |
|
} |
|
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' |
|
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 platform(project(':spring-boot-project:spring-boot-dependencies')) |
|
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') |
|
|
|
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.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 |
|
useJUnitPlatform() |
|
} |
|
|
|
task fullJar(type: Jar) { |
|
classifier = 'full' |
|
entryCompression = 'stored' |
|
from(configurations.runtimeClasspath) { |
|
into 'BOOT-INF/lib' |
|
} |
|
from(sourceSets.main.output) { |
|
into 'BOOT-INF/classes' |
|
} |
|
into("") { |
|
from zipTree(configurations.loader.singleFile) |
|
} |
|
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')) { |
|
eachFile { it.mode = it.directory ? 0x755 : 0x644 } |
|
} |
|
archive.from(file('src/main/executablecontent')) { |
|
eachFile { it.mode = 0x755 } |
|
} |
|
} |
|
|
|
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/springboot.rb') |
|
archive = tar.archiveFile |
|
} |
|
|
|
def homebrewFormulaArtifact = artifacts.add('archives', file("$buildDir/homebrew/springboot.rb")) { |
|
type 'rb' |
|
classifier 'homebrew' |
|
builtBy 'homebrewFormula' |
|
} |
|
|
|
publishing { |
|
publications { |
|
getByName('maven') { |
|
artifact fullJar |
|
artifact tar |
|
artifact zip |
|
artifact scoopManifestArtifact |
|
artifact homebrewFormulaArtifact |
|
} |
|
} |
|
} |
|
|
|
|