Andy Wilkinson 714a187d8f Rework dep mgmt again to avoid consumers picking up strict constraints
This paves the way for publishing Gradle module metadata once the
problem caused by snapshot versions and our two-step publication
process has been addressed.

See gh-19609
2020-01-15 12:33:18 +00:00

195 lines
6.7 KiB
Groovy

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
}
}
}