You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by jd...@apache.org on 2025/07/27 02:32:35 UTC

(incubator-grails-gradle-publish) branch 7.0.x updated: feat: allow turning off the dependency validation

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

jdaugherty pushed a commit to branch 7.0.x
in repository https://gitbox.apache.org/repos/asf/incubator-grails-gradle-publish.git


The following commit(s) were added to refs/heads/7.0.x by this push:
     new d419958  feat: allow turning off the dependency validation
d419958 is described below

commit d4199589b153a6cbd859149e71a906d38a532c01
Author: James Daugherty <jd...@jdresources.net>
AuthorDate: Sat Jul 26 22:32:09 2025 -0400

    feat: allow turning off the dependency validation
---
 .../gradle/publish/GrailsPublishExtension.groovy   |  8 ++-
 .../publish/GrailsPublishGradlePlugin.groovy       | 68 +++++++++++-----------
 2 files changed, 42 insertions(+), 34 deletions(-)

diff --git a/plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishExtension.groovy b/plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishExtension.groovy
index 21d0a2e..d80dbf6 100644
--- a/plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishExtension.groovy
+++ b/plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishExtension.groovy
@@ -121,6 +121,11 @@ class GrailsPublishExtension {
      */
     final Property<Directory> testRepositoryPath
 
+    /**
+     * Validate that any transitive dependency has a version set in the pom & try to set it if not defined
+     */
+    final Property<Boolean> transitiveDependencies
+
     @Inject
     GrailsPublishExtension(ObjectFactory objects, Project project) {
         githubSlug = objects.property(String).convention(
@@ -164,9 +169,10 @@ class GrailsPublishExtension {
             project.group as String
         })
         publishTestSources = objects.property(Boolean).convention(false)
+        testRepositoryPath = objects.directoryProperty().convention(null as Directory)
         addComponents = objects.property(Boolean).convention(true)
         publicationName = objects.property(String).convention('maven')
-        testRepositoryPath = objects.directoryProperty().convention(null as Directory)
+        transitiveDependencies = objects.property(Boolean).convention(true)
     }
 
     License getLicense() {
diff --git a/plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePlugin.groovy b/plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePlugin.groovy
index de25251..e0728d7 100644
--- a/plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePlugin.groovy
+++ b/plugin/src/main/groovy/org/apache/grails/gradle/publish/GrailsPublishGradlePlugin.groovy
@@ -377,39 +377,41 @@ Note: if project properties are used, the properties must be defined prior to ap
                             }
 
                             // fix dependencies without a version
-                            def mavenPomNamespace = 'http://maven.apache.org/POM/4.0.0'
-                            def dependenciesQName = new QName(mavenPomNamespace, 'dependencies')
-                            def dependencyQName = new QName(mavenPomNamespace, 'dependency')
-                            def versionQName = new QName(mavenPomNamespace, 'version')
-                            def groupIdQName = new QName(mavenPomNamespace, 'groupId')
-                            def artifactIdQName = new QName(mavenPomNamespace, 'artifactId')
-                            def nodes = (pomNode.getAt(dependenciesQName) as NodeList)
-                            if (nodes) {
-                                def dependencyNodes = (nodes.first() as Node).getAt(dependencyQName)
-                                dependencyNodes.findAll { dependencyNode ->
-                                    def versionNodes = (dependencyNode as Node).getAt(versionQName)
-                                    return versionNodes.size() == 0 || (versionNodes.first() as Node).text().isEmpty()
-                                }.each { dependencyNode ->
-                                    def groupId = ((dependencyNode as Node).getAt(groupIdQName).first() as Node).text()
-                                    def artifactId = ((dependencyNode as Node).getAt(artifactIdQName).first() as Node).text()
-                                    def resolvedArtifacts = project.configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts +
-                                            project.configurations.runtimeClasspath.resolvedConfiguration.resolvedArtifacts
-                                    if (project.configurations.hasProperty('testFixturesCompileClasspath')) {
-                                        resolvedArtifacts += project.configurations.testFixturesCompileClasspath.resolvedConfiguration.resolvedArtifacts +
-                                                project.configurations.testFixturesRuntimeClasspath.resolvedConfiguration.resolvedArtifacts
-                                    }
-                                    def managedVersion = resolvedArtifacts.find {
-                                        it.moduleVersion.id.group == groupId &&
-                                                it.moduleVersion.id.name == artifactId
-                                    }?.moduleVersion?.id?.version
-                                    if (!managedVersion) {
-                                        throw new RuntimeException("No version found for dependency $groupId:$artifactId.")
-                                    }
-                                    def versionNode = (dependencyNode as Node).getAt(versionQName)
-                                    if (versionNode) {
-                                        (versionNode.first() as Node).value = managedVersion
-                                    } else {
-                                        (dependencyNode as Node).appendNode('version', managedVersion)
+                            if (gpe.transitiveDependencies.get()) {
+                                def mavenPomNamespace = 'http://maven.apache.org/POM/4.0.0'
+                                def dependenciesQName = new QName(mavenPomNamespace, 'dependencies')
+                                def dependencyQName = new QName(mavenPomNamespace, 'dependency')
+                                def versionQName = new QName(mavenPomNamespace, 'version')
+                                def groupIdQName = new QName(mavenPomNamespace, 'groupId')
+                                def artifactIdQName = new QName(mavenPomNamespace, 'artifactId')
+                                def nodes = (pomNode.getAt(dependenciesQName) as NodeList)
+                                if (nodes) {
+                                    def dependencyNodes = (nodes.first() as Node).getAt(dependencyQName)
+                                    dependencyNodes.findAll { dependencyNode ->
+                                        def versionNodes = (dependencyNode as Node).getAt(versionQName)
+                                        return versionNodes.size() == 0 || (versionNodes.first() as Node).text().isEmpty()
+                                    }.each { dependencyNode ->
+                                        def groupId = ((dependencyNode as Node).getAt(groupIdQName).first() as Node).text()
+                                        def artifactId = ((dependencyNode as Node).getAt(artifactIdQName).first() as Node).text()
+                                        def resolvedArtifacts = project.configurations.compileClasspath.resolvedConfiguration.resolvedArtifacts +
+                                                project.configurations.runtimeClasspath.resolvedConfiguration.resolvedArtifacts
+                                        if (project.configurations.hasProperty('testFixturesCompileClasspath')) {
+                                            resolvedArtifacts += project.configurations.testFixturesCompileClasspath.resolvedConfiguration.resolvedArtifacts +
+                                                    project.configurations.testFixturesRuntimeClasspath.resolvedConfiguration.resolvedArtifacts
+                                        }
+                                        def managedVersion = resolvedArtifacts.find {
+                                            it.moduleVersion.id.group == groupId &&
+                                                    it.moduleVersion.id.name == artifactId
+                                        }?.moduleVersion?.id?.version
+                                        if (!managedVersion) {
+                                            throw new RuntimeException("No version found for dependency $groupId:$artifactId.")
+                                        }
+                                        def versionNode = (dependencyNode as Node).getAt(versionQName)
+                                        if (versionNode) {
+                                            (versionNode.first() as Node).value = managedVersion
+                                        } else {
+                                            (dependencyNode as Node).appendNode('version', managedVersion)
+                                        }
                                     }
                                 }
                             }