From cf676e5ae2bc1726fec282a4d65853034ea7ecf6 Mon Sep 17 00:00:00 2001 From: Gary Russell Date: Wed, 9 Nov 2022 11:23:06 -0500 Subject: [PATCH] Add spring-kafka-bom --- build.gradle | 50 ++++++++++++++++--- .../publish-maven.gradle | 0 settings.gradle | 1 + spring-kafka-bom/spring-amqp-bom.txt | 1 + 4 files changed, 46 insertions(+), 6 deletions(-) rename publish-maven.gradle => gradle/publish-maven.gradle (100%) create mode 100644 spring-kafka-bom/spring-amqp-bom.txt diff --git a/build.gradle b/build.gradle index eb1e0d85..b3ee0a14 100644 --- a/build.gradle +++ b/build.gradle @@ -83,6 +83,9 @@ ext { zookeeperVersion = '3.6.3' idPrefix = 'kafka' + + javaProjects = subprojects - project(':spring-kafka-bom') + } nohttp { @@ -127,10 +130,10 @@ allprojects { } -subprojects { subproject -> +configure(javaProjects) { subproject -> apply plugin: 'java-library' apply plugin: 'java' - apply from: "${rootProject.projectDir}/publish-maven.gradle" + apply from: "${rootProject.projectDir}/gradle/publish-maven.gradle" apply plugin: 'eclipse' apply plugin: 'idea' apply plugin: 'jacoco' @@ -356,6 +359,35 @@ project ('spring-kafka') { } +project('spring-kafka-bom') { + description = 'Spring for Apache Kafka (Bill of Materials)' + + apply plugin: 'java-platform' + apply from: "${rootDir}/gradle/publish-maven.gradle" + + dependencies { + constraints { + javaProjects.sort { "$it.name" }.each { + if (it.name != 'spring-kafka-docs') { + api it + } + } + } + } + + publishing { + publications { + mavenJava(MavenPublication) { + from components.javaPlatform + } + } + } + + sonarqube { + skipProject = true + } +} + project ('spring-kafka-test') { description = 'Spring Kafka Test Support' @@ -544,11 +576,11 @@ task api(type: Javadoc) { addBooleanOption('Xdoclint:syntax', true) // only check syntax with doclint } - source subprojects.collect { project -> + source javaProjects.collect { project -> project.sourceSets.main.allJava } - classpath = files(subprojects.collect { project -> + classpath = files(javaProjects.collect { project -> project.sourceSets.main.compileClasspath }) destinationDir = new File(buildDir, 'api') @@ -602,13 +634,19 @@ task distZip(type: Zip, dependsOn: [docsZip]) { //, schemaZip]) { into "${baseDir}/docs" } - subprojects.each { subproject -> + javaProjects.each { subproject -> into ("${baseDir}/libs") { from subproject.jar from subproject.sourcesJar from subproject.javadocJar } } + + from(project(':spring-kafka-bom').generatePomFileForMavenJavaPublication) { + into "${baseDir}/libs" + rename 'pom-default.xml', "spring-kafka-bom-${project.version}.xml" + } + } artifacts { @@ -621,7 +659,7 @@ task dist(dependsOn: assemble) { description = 'Builds -dist, -docs distribution archives.' } -apply from: "${rootProject.projectDir}/publish-maven.gradle" +apply from: "${rootProject.projectDir}/gradle/publish-maven.gradle" publishing { publications { diff --git a/publish-maven.gradle b/gradle/publish-maven.gradle similarity index 100% rename from publish-maven.gradle rename to gradle/publish-maven.gradle diff --git a/settings.gradle b/settings.gradle index c6313c85..97820984 100644 --- a/settings.gradle +++ b/settings.gradle @@ -20,5 +20,6 @@ gradleEnterprise { rootProject.name = 'spring-kafka-dist' include 'spring-kafka' +include 'spring-kafka-bom' include 'spring-kafka-test' include 'spring-kafka-docs' diff --git a/spring-kafka-bom/spring-amqp-bom.txt b/spring-kafka-bom/spring-amqp-bom.txt new file mode 100644 index 00000000..9bf40121 --- /dev/null +++ b/spring-kafka-bom/spring-amqp-bom.txt @@ -0,0 +1 @@ +This meta-project is used to generate a bill-of-materials POM that contains the other projects in a dependencyManagement section.