Andy Wilkinson aefe52e4d0 Revert "Rework dep management to avoid consumers picking up strict constraints"
This reverts commit b34a311d02fe60ac267493ccc7f2c6b816f3a15c as,
having disabled the publishing of Gradle's module metadata (4f75ab5),
the changes are no longer needed.

See gh-19609
2020-01-14 12:15:53 +00:00

196 lines
6.7 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 enforcedPlatform(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 enforcedPlatform(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
}
}
}