From ae7802204d8a0b5df3abadb202890a45d0aafe2c Mon Sep 17 00:00:00 2001 From: Janne Valkealahti Date: Wed, 7 Sep 2022 17:35:23 +0100 Subject: [PATCH] Customize poms with correct dependencyManagement - This is a fix for regression introduced in a9a420df223d774bcc095bd9eb0e75cc83e63080 which was an attempt to work better with boot's aot plugin. - Fix is a bit hacky but should work until we find better fix for this using tooling from gradle. - Fixes #521 --- .../shell/gradle/SpringMavenPlugin.java | 26 +++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/buildSrc/src/main/java/org/springframework/shell/gradle/SpringMavenPlugin.java b/buildSrc/src/main/java/org/springframework/shell/gradle/SpringMavenPlugin.java index 5861865c..2d4a9c1d 100644 --- a/buildSrc/src/main/java/org/springframework/shell/gradle/SpringMavenPlugin.java +++ b/buildSrc/src/main/java/org/springframework/shell/gradle/SpringMavenPlugin.java @@ -15,12 +15,17 @@ */ package org.springframework.shell.gradle; +import java.util.List; +import java.util.ListIterator; + import org.gradle.api.Plugin; import org.gradle.api.Project; +import org.gradle.api.attributes.Usage; import org.gradle.api.plugins.JavaPlugin; import org.gradle.api.plugins.JavaPluginExtension; import org.gradle.api.plugins.PluginManager; import org.gradle.api.publish.PublishingExtension; +import org.gradle.api.publish.VariantVersionMappingStrategy; import org.gradle.api.publish.maven.MavenPom; import org.gradle.api.publish.maven.MavenPomDeveloperSpec; import org.gradle.api.publish.maven.MavenPomIssueManagement; @@ -30,6 +35,8 @@ import org.gradle.api.publish.maven.MavenPomScm; import org.gradle.api.publish.maven.MavenPublication; import org.gradle.api.publish.maven.plugins.MavenPublishPlugin; +import groovy.util.Node; + public class SpringMavenPlugin implements Plugin { @Override @@ -64,6 +71,25 @@ public class SpringMavenPlugin implements Plugin { pom.developers(this::customizeDevelopers); pom.scm(scm -> customizeScm(scm, project)); pom.issueManagement(this::customizeIssueManagement); + + // TODO: find something better not to add dependencyManagement in pom + // which result spring-shell-management in it. spring-shell-dependencies + // has its own dependencyManagement which we need to keep + if (!project.getName().equals("spring-shell-dependencies")) { + pom.withXml(xxx -> { + Node pomNode = xxx.asNode(); + List childs = pomNode.children(); + ListIterator iter = childs.listIterator(); + while (iter.hasNext()) { + Object next = iter.next(); + if (next instanceof Node) { + if (((Node)next).name().toString().equals("{http://maven.apache.org/POM/4.0.0}dependencyManagement")) { + iter.remove(); + } + } + } + }); + } } private void customizeOrganization(MavenPomOrganization organization) {