You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by pa...@apache.org on 2020/02/06 13:20:15 UTC

[groovy] branch GROOVY_2_4_X updated: GROOVY-9384: Groovy should provide a Maven BOM (port to 2_4_X)

This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch GROOVY_2_4_X
in repository https://gitbox.apache.org/repos/asf/groovy.git


The following commit(s) were added to refs/heads/GROOVY_2_4_X by this push:
     new 77d0fe1  GROOVY-9384: Groovy should provide a Maven BOM (port to 2_4_X)
77d0fe1 is described below

commit 77d0fe1b211f52f784653d1752e7834782077e24
Author: Paul King <pa...@asert.com.au>
AuthorDate: Wed Feb 5 09:09:32 2020 +1000

    GROOVY-9384: Groovy should provide a Maven BOM (port to 2_4_X)
---
 gradle/publish.gradle |  4 +++-
 gradle/upload.gradle  | 29 +++++++++++++++++++++++++++++
 2 files changed, 32 insertions(+), 1 deletion(-)

diff --git a/gradle/publish.gradle b/gradle/publish.gradle
index 5a77ae1..b454071 100644
--- a/gradle/publish.gradle
+++ b/gradle/publish.gradle
@@ -44,7 +44,7 @@ allprojects {
                 }
             }
             publish {
-                excludePatterns = "org/codehaus/groovy/groovy/*/groovy-all-*,org/codehaus/groovy/groovy/*/groovy-backports-*,org/codehaus/groovy/groovy/*/groovy-binary-*"
+                excludePatterns = "org/codehaus/groovy/groovy/*/groovy-all-*,org/codehaus/groovy/groovy/*/groovy-bom-*,org/codehaus/groovy/groovy/*/groovy-backports-*,org/codehaus/groovy/groovy/*/groovy-binary-*"
                 repository {
                     repoKey = project.hasProperty('artifactoryRepoKey') ? project.artifactoryRepoKey : 'oss-snapshot-local'
                     //The Artifactory repository key to publish to
@@ -82,8 +82,10 @@ artifactoryPublish {
                 }
             }
         }
+        deployDetails.add(makeTransformedPomDetails(name: 'groovy-bom'))
 
         if (isReleaseVersion) {
+            deployDetails.add(makeTransformedPomSigDetails(name: 'groovy-bom'))
             allprojects {
                 if (project == rootProject || rootProject.ext.modules().contains(project)) {
                     configurations.archives.artifacts.findAll {
diff --git a/gradle/upload.gradle b/gradle/upload.gradle
index c5a77bd..86cfaba 100644
--- a/gradle/upload.gradle
+++ b/gradle/upload.gradle
@@ -219,11 +219,17 @@ ext.pomAll = {
     addFilter('groovy') { artifact, file ->
         !(artifact.name.contains('groovy-all')) &&
                 !(artifact.name.contains('groovy-binary')) &&
+                !(artifact.name.contains('groovy-bom')) &&
                 !(artifact.name.contains('backport'))
     }
     addFilter('all') { artifact, file ->
         artifact.name.contains('groovy-all')
     }
+    addFilter('bom') { artifact, file ->
+        // add an arbitrary artifact, so that the pom file is generated
+        // we adjust the packaging attribute later
+        artifact.name.contains('groovy-binary')
+    }
     addFilter('binary') { artifact, file ->
         artifact.name.contains('groovy-binary')
     }
@@ -273,6 +279,29 @@ ext.pomAll = {
         p.dependencies.clear()
     }
 
+    // bom for "all" dependencies
+    def allbom = pom('bom', pomConfigureClosureWithoutTweaks)
+    allbom.artifactId = 'groovy-bom'
+    allbom.whenConfigured { p ->
+        p.dependencies.clear()
+        // defer setting packaging until here otherwise gets overwritten
+        p.packaging = 'pom'
+        p.withXml { xml ->
+            def projectNode = xml.asNode()
+            def dependencyManagement = projectNode.appendNode('dependencyManagement').appendNode('dependencies')
+            String groupId = project.group
+            allprojects { proj ->
+                if (proj.name.startsWith('groovy')) {
+                    dependencyManagement.appendNode('dependency').with { dep ->
+                        dep.appendNode('groupId', groupId)
+                        dep.appendNode('artifactId', proj.name)
+                        dep.appendNode('version', proj.version)
+                    }
+                }
+            }
+        }
+    }
+
     beforeDeployment { MavenDeployment deployment -> if (isReleaseVersion) signing.signPom(deployment) }
 }