Fix project Maven BOM generation.

Specifically, fixed the generation of the Maven POM (BOM) dependencyManagement block.
This commit is contained in:
John Blum
2022-02-10 21:00:15 -08:00
parent 11386a4d52
commit 6600bb3f23
2 changed files with 22 additions and 18 deletions

View File

@@ -45,24 +45,26 @@ class MavenBomPlugin implements Plugin<Project> {
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)
}
}

View File

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