diff --git a/build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/PropertyNameCalculator.groovy b/build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/PropertyNameCalculator.groovy index 987860d5295..106ed6a127e 100644 --- a/build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/PropertyNameCalculator.groovy +++ b/build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/PropertyNameCalculator.groovy @@ -28,6 +28,8 @@ import org.gradle.api.plugins.JavaPlatformPlugin */ class PropertyNameCalculator { + static final String GRAILS_VERSION_PROPERTY = 'grails.version' + final Map keysToPlatformCoordinates = [:] final Map platformDefinitions = [:] @@ -41,22 +43,21 @@ class PropertyNameCalculator { this.versions.putAll(definitionVersions) } - void addProjects(Collection projects) { + void addProjects(Collection projects, String grailsVersion) { + versions.put(GRAILS_VERSION_PROPERTY, grailsVersion) + for (Project project : projects) { if (project.plugins.hasPlugin(JavaPlatformPlugin) || !project.extensions.findByName('grailsPublish')) { continue } String artifactId = (project.findProperty('pomArtifactId') ?: project.name) - String baseVersionName = artifactId.replaceAll('-', '.') - String versionName = "${baseVersionName}.version" as String String coordinates = "${project.group}:${artifactId}:${project.version}" as String ExtractedDependencyConstraint constraint = new ExtractedDependencyConstraint(coordinates as String) - constraint.versionPropertyReference = "\${${versionName}}" as String + constraint.versionPropertyReference = "\${${GRAILS_VERSION_PROPERTY}}" as String definitions.put(coordinates, constraint) - keysToCoordinates.put(coordinates, baseVersionName) - versions.put(versionName, project.version as String) + keysToCoordinates.put(coordinates, 'grails') } } diff --git a/grails-bom/build.gradle b/grails-bom/build.gradle index 29b2e282ec2..d18a3ef2060 100644 --- a/grails-bom/build.gradle +++ b/grails-bom/build.gradle @@ -160,6 +160,9 @@ ext { def deps = depMgmt?.dependencies?.getAt(0) if (deps) { Map pomProperties = [:] + PropertyNameCalculator propertyNameCalculator = new PropertyNameCalculator(combinedPlatforms, combinedDependencies, combinedVersions) + propertyNameCalculator.addProjects(rootProject.subprojects, projectVersion) + deps.dependency.each { dep -> String groupId = dep.groupId.text().trim() String artifactId = dep.artifactId.text().trim() @@ -171,8 +174,6 @@ ext { } if (inlineVersion) { - PropertyNameCalculator propertyNameCalculator = new PropertyNameCalculator(combinedPlatforms, combinedDependencies, combinedVersions) - propertyNameCalculator.addProjects(rootProject.subprojects) 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 @@ -183,18 +184,17 @@ ext { pomProperties.put(extractedConstraint.versionPropertyName, inlineVersion) } - if (gradle.includedBuilds*.any { it.name == artifactId && groupId.startsWith('org.apache.grails') }) { - String baseVersionName = artifactId.replaceAll('-', '.') - String versionName = "${baseVersionName}.version" as String - dep.version[0].value = "\${${versionName}}" as String - pomProperties.put(versionName, inlineVersion) + // For included builds (grails-gradle), also use grails.version + if (gradle.includedBuilds.any { it.name == artifactId && groupId.startsWith('org.apache.grails') }) { + dep.version[0].value = "\${${PropertyNameCalculator.GRAILS_VERSION_PROPERTY}}" as String + pomProperties.put(PropertyNameCalculator.GRAILS_VERSION_PROPERTY, inlineVersion) } } else if (!inlineVersion) { throw new GradleException("Dependency $groupId:$artifactId does not have a version.") } } - for (Map.Entry property : pomProperties.entrySet()) { + for (Map.Entry property : pomProperties.sort().entrySet()) { propertiesNode.appendNode(property.key, property.value) } }