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

jdaugherty pushed a commit to branch grails-geb
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 99fd77beae471b7f8e3aeb224d2789868a5c1fe9
Author: James Daugherty <[email protected]>
AuthorDate: Sun Apr 20 11:34:16 2025 -0400

    Update pom property reference extract
---
 grails-bom/build.gradle                            | 13 +++++-----
 .../tasks/bom/ExtractDependenciesTask.groovy       |  8 +++---
 .../tasks/bom/ExtractedDependencyConstraint.groovy | 29 ++++++++++++++++++----
 .../gradle/tasks/bom/PropertyNameCalculator.groovy |  4 +--
 4 files changed, 38 insertions(+), 16 deletions(-)

diff --git a/grails-bom/build.gradle b/grails-bom/build.gradle
index 9f3523d25a..b53f9cf02e 100644
--- a/grails-bom/build.gradle
+++ b/grails-bom/build.gradle
@@ -1,4 +1,5 @@
 import org.apache.grails.gradle.tasks.bom.ExtractDependenciesTask
+import org.apache.grails.gradle.tasks.bom.ExtractedDependencyConstraint
 import org.apache.grails.gradle.tasks.bom.PropertyNameCalculator
 
 // Copyright 2024 the original author or authors.
@@ -119,14 +120,14 @@ ext {
 
                 PropertyNameCalculator propertyNameCalculator = new 
PropertyNameCalculator(combinedPlatforms, combinedDependencies, 
combinedVersions)
                 if (inlineVersion) {
-                    String propertyName = 
propertyNameCalculator.calculate(groupId, artifactId, inlineVersion, isBom)
-                    if (propertyName) {
-                        // Replace the version in the pom with a property 
reference
-                        String propertyReference = "\${${propertyName}}"
-                        dep.version[0].value = propertyReference
+                    ExtractedDependencyConstraint extractedConstraint = 
propertyNameCalculator.calculate(groupId, artifactId, inlineVersion, isBom)
+                    if (extractedConstraint?.versionPropertyReference) {
+                        // use the property reference instead of the hard 
coded version so that it can be
+                        // overriden by the spring boot dependency management 
plugin
+                        dep.version[0].value = 
extractedConstraint.versionPropertyReference
 
                         // Add an entry in the <properties> node with the 
actual version number
-                        pomProperties.put(propertyName, inlineVersion)
+                        
pomProperties.put(extractedConstraint.versionPropertyName, inlineVersion)
                     }
                 } else if (!inlineVersion) {
                     throw new GradleException("Dependency $groupId:$artifactId 
does not have a version.")
diff --git 
a/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy
 
b/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy
index a44d9c2614..5f552a630c 100644
--- 
a/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy
+++ 
b/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy
@@ -15,6 +15,8 @@ import org.gradle.api.provider.Property
 import org.gradle.api.tasks.*
 import 
io.spring.gradle.dependencymanagement.org.apache.maven.model.io.xpp3.MavenXpp3Reader
 
+import java.util.regex.Pattern
+
 /**
  * Grails Bom files define their dependencies in a series of maps, this task 
takes those maps and generates an
  * asciidoc file containing all of the resolve dependencies and their versions 
in the bom.
@@ -90,7 +92,7 @@ abstract class ExtractDependenciesTask extends DefaultTask {
         List lines = []
         constraints.values().sort { ExtractedDependencyConstraint a, 
ExtractedDependencyConstraint b -> a.groupId <=> b.groupId ?: a.artifactId <=> 
b.artifactId }.withIndex().each {
             int position = it.v2 + 1
-            lines << "| ${position} | ${it.v1.groupId} | ${it.v1.artifactId} | 
${it.v1.version} | ${it.v1.versionProperty ?: ''} | ${it.v1.source} "
+            lines << "| ${position} | ${it.v1.groupId} | ${it.v1.artifactId} | 
${it.v1.version} | ${it.v1.versionPropertyReference ?: ''} | ${it.v1.source} "
         }
         lines
     }
@@ -209,7 +211,7 @@ abstract class ExtractDependenciesTask extends DefaultTask {
                         String propertyName = depItem.version.contains('$') ? 
depItem.version : null
                         ExtractedDependencyConstraint constraint = new 
ExtractedDependencyConstraint(
                                 groupId: resolvedCoordinates.groupId, 
artifactId: resolvedCoordinates.artifactId,
-                                version: resolvedVersion, versionProperty: 
propertyName, source: bomCoordinates.artifactId
+                                version: resolvedVersion, 
versionPropertyReference: propertyName, source: bomCoordinates.artifactId
                         )
                         if (depItem.scope == 'import') {
                             constraints.put(resolvedCoordinates, constraint)
@@ -238,7 +240,7 @@ abstract class ExtractDependenciesTask extends DefaultTask {
     }
 
     private String resolveMavenProperty(String errorDescription, String 
dynamicVersion, Map properties, int maxIterations = 10) {
-        def dynamicPattern = ~/\$\{([^}]+)\}/
+        Pattern dynamicPattern = ~/\$\{([^}]+)\}/
         String expandedVersion = dynamicVersion
 
         int iterations = 0
diff --git 
a/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractedDependencyConstraint.groovy
 
b/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractedDependencyConstraint.groovy
index 672a211974..995ce74d9f 100644
--- 
a/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractedDependencyConstraint.groovy
+++ 
b/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractedDependencyConstraint.groovy
@@ -4,11 +4,14 @@ import groovy.transform.CompileStatic
 import groovy.transform.MapConstructor
 import groovy.transform.ToString
 
+import java.util.regex.Matcher
+import java.util.regex.Pattern
+
 @CompileStatic
-@MapConstructor(includes = ['groupId', 'artifactId', 'version', 
'versionProperty', 'source'], includeSuperProperties = true)
-@ToString(includes = ['groupId', 'artifactId', 'version', 'versionProperty', 
'source'], includeSuperProperties = true)
+@MapConstructor(includes = ['groupId', 'artifactId', 'version', 
'versionPropertyReference', 'source'], includeSuperProperties = true)
+@ToString(includes = ['groupId', 'artifactId', 'version', 
'versionPropertyReference', 'source'], includeSuperProperties = true)
 class ExtractedDependencyConstraint extends CoordinateVersionHolder {
-    String versionProperty
+    String versionPropertyReference
     String source
 
     ExtractedDependencyConstraint(String coordinates) {
@@ -19,7 +22,23 @@ class ExtractedDependencyConstraint extends 
CoordinateVersionHolder {
         }
     }
 
-    String getVersionProperty() {
-        versionProperty == '${project.version}' ? '' : versionProperty
+    String getVersionPropertyReference() {
+        versionPropertyReference == '${project.version}' ? '' : 
versionPropertyReference
+    }
+
+    String getVersionPropertyName() {
+        String property = getVersionPropertyReference()
+        if(!property) {
+            return null
+        }
+
+        Pattern dynamicPattern = ~/\$\{([^}]+)\}/
+
+        Matcher matcher = property =~ dynamicPattern
+        if(!matcher.find()) {
+            throw new IllegalStateException("Invalid Verison Property: 
${property}")
+        }
+
+        matcher.group(1)
     }
 }
\ No newline at end of file
diff --git 
a/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/PropertyNameCalculator.groovy
 
b/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/PropertyNameCalculator.groovy
index 56808ff902..e8df012bde 100644
--- 
a/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/PropertyNameCalculator.groovy
+++ 
b/grails-gradle/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/PropertyNameCalculator.groovy
@@ -41,13 +41,13 @@ class PropertyNameCalculator {
             return null
         }
 
-        if(found.versionProperty) {
+        if(found.versionPropertyReference) {
             return found
         }
 
         String propertyName = determinePossibleKey(found, coordinateMapping)
         if (propertyName) {
-            found.versionProperty = propertyName ? "\${${propertyName}}" : '' 
as String
+            found.versionPropertyReference = propertyName ? 
"\${${propertyName}}" : '' as String
             return found
         }
 

Reply via email to