From 6600bb3f239c22532fc7cb1dda5e21f4ef51b540 Mon Sep 17 00:00:00 2001 From: John Blum Date: Thu, 10 Feb 2022 21:00:15 -0800 Subject: [PATCH] Fix project Maven BOM generation. Specifically, fixed the generation of the Maven POM (BOM) dependencyManagement block. --- .../gradle/convention/MavenBomPlugin.groovy | 8 +++-- .../gradle/convention/MavenBomTask.groovy | 32 ++++++++++--------- 2 files changed, 22 insertions(+), 18 deletions(-) diff --git a/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomPlugin.groovy b/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomPlugin.groovy index f3d995e0..be850dd0 100644 --- a/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomPlugin.groovy +++ b/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomPlugin.groovy @@ -45,24 +45,26 @@ class MavenBomPlugin implements Plugin { description: 'Configures the Maven POM as a Maven BOM (Bill of Materials)') project.tasks.artifactoryPublish.dependsOn project.mavenBom + project.tasks.publishToMavenLocal.dependsOn project.mavenBom project.tasks.publishToOssrh.dependsOn project.mavenBom project.rootProject.allprojects.each { p -> p.plugins.withType(SpringMavenPlugin) { if (!project.name.equals(p.name)) { + //println("Maven BOM Project [${p.name}]") project.mavenBom.projects.add(p) } } } + // TODO: Why? + Utils.configureDeployArtifactsTask(project) + // TODO: Shouldn't this be { archives project.mavenBom } according to: // https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#getArtifacts-- // TODO: Is this even necessary since this block is defined in MavenBomTask? project.artifacts { archives project.mavenBom.bomFile } - - // TODO: Why? - Utils.configureDeployArtifactsTask(project) } } diff --git a/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomTask.groovy b/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomTask.groovy index bed6233c..8eed1162 100644 --- a/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomTask.groovy +++ b/buildSrc/src/main/groovy/io/spring/gradle/convention/MavenBomTask.groovy @@ -35,8 +35,8 @@ class MavenBomTask extends DefaultTask { void configureBom() { bomFile.parentFile.mkdirs() - bomFile.write("Maven BOM (Bill of Materials)" + - " See https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies") + bomFile.write("Maven BOM (Bill of Materials)" + + " See https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Importing_Dependencies") // TODO: Shouldn't this be { archives project.mavenBom } according to: // https://docs.gradle.org/current/javadoc/org/gradle/api/Project.html#getArtifacts-- @@ -45,25 +45,27 @@ class MavenBomTask extends DefaultTask { archives(bomFile) } + def pomDependencyManagementNode = { + delegate.dependencyManagement { + delegate.dependencies { + projects.sort { dep -> "$dep.group:$dep.name" }.each { p -> + delegate.dependency { + delegate.groupId p.group + delegate.artifactId p.name + delegate.version p.version + } + } + } + } + } + project.publishing { publications { mavenJava(MavenPublication) { pom { packaging = "pom" withXml { - asNode().children().last() + { - delegate.dependencyManagement { - delegate.dependencies { - projects.sort { dep -> "$dep.group:$dep.name" }.each { p -> - delegate.dependency { - delegate.groupId(p.group) - delegate.artifactId(p.name) - delegate.version(p.version) - } - } - } - } - } + asNode().children().last() + pomDependencyManagementNode } } }