jamesfredley commented on code in PR #15467:
URL: https://github.com/apache/grails-core/pull/15467#discussion_r3342079379
##########
build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy:
##########
@@ -259,91 +261,229 @@ abstract class ExtractDependenciesTask extends
DefaultTask {
Properties populatePlatformDependencies(CoordinateVersionHolder
bomCoordinates, List<CoordinateHolder> exclusionRules, Map<CoordinateHolder,
ExtractedDependencyConstraint> constraints, boolean error = true, int level =
0) {
Dependency bomDependency =
dependencyHandler.create("${bomCoordinates.coordinates}@pom")
Configuration dependencyConfiguration =
configurationContainer.detachedConfiguration(bomDependency)
+ dependencyConfiguration.transitive = false
File bomPomFile = dependencyConfiguration.singleFile
- MavenXpp3Reader reader = new MavenXpp3Reader()
- Model model = reader.read(new FileReader(bomPomFile))
-
+ Document doc = parsePom(bomPomFile)
Properties versionProperties = new Properties()
- if (model.parent) {
- // Need to populate the parent bom if it's present first
- CoordinateVersionHolder parentBom = new CoordinateVersionHolder(
- groupId: model.parent.groupId,
- artifactId: model.parent.artifactId,
- version: model.parent.version
- )
+
+ // Parent POM populated first so its properties can be overridden by
the child
+ CoordinateVersionHolder parentBom = readParentCoordinates(doc)
+ if (parentBom) {
populatePlatformDependencies(parentBom, exclusionRules,
constraints, false, level + 1)?.entrySet()?.each { Map.Entry<Object, Object>
entry ->
versionProperties.put(entry.key, entry.value)
}
}
- model.properties.entrySet().each { Map.Entry<Object, Object> entry ->
- versionProperties.put(entry.key, entry.value)
+
+ readProperties(doc).each { String name, String value ->
+ versionProperties.put(name, value)
}
versionProperties.put('project.groupId', bomCoordinates.groupId)
versionProperties.put('project.version', bomCoordinates.version)
- if (model.dependencyManagement &&
model.dependencyManagement.dependencies) {
- for
(io.spring.gradle.dependencymanagement.org.apache.maven.model.Dependency
depItem : model.dependencyManagement.dependencies) {
- CoordinateHolder baseCoordinates = new CoordinateHolder(
- groupId: depItem.groupId,
- artifactId: depItem.artifactId
- )
-
- CoordinateHolder resolvedCoordinates = new CoordinateHolder(
- groupId:
resolveMavenProperty(baseCoordinates.coordinatesWithoutVersion,
depItem.groupId, versionProperties),
- artifactId:
resolveMavenProperty(baseCoordinates.coordinatesWithoutVersion,
depItem.artifactId, versionProperties)
- )
-
- if (!constraints.containsKey(resolvedCoordinates)) {
- boolean isExcluded = exclusionRules.any { CoordinateHolder
excludedCoordinate ->
- if (excludedCoordinate.groupId &&
excludedCoordinate.artifactId) {
- return resolvedCoordinates == excludedCoordinate
- }
-
- if (excludedCoordinate.groupId &&
!excludedCoordinate.artifactId) {
- return depItem.groupId ==
excludedCoordinate.groupId
- }
-
- if (!excludedCoordinate.groupId &&
excludedCoordinate.artifactId) {
- return depItem.artifactId ==
excludedCoordinate.artifactId
- }
-
- false
- }
-
- if (!isExcluded) {
- String resolvedVersion =
resolveMavenProperty(resolvedCoordinates.coordinatesWithoutVersion,
depItem.version, versionProperties)
- String propertyName = depItem.version.contains('$') ?
depItem.version : null
- ExtractedDependencyConstraint constraint = new
ExtractedDependencyConstraint(
- groupId: resolvedCoordinates.groupId,
artifactId: resolvedCoordinates.artifactId,
- version: resolvedVersion,
versionPropertyReference: propertyName, source: bomCoordinates.artifactId
- )
- if (depItem.scope == 'import') {
- constraints.put(resolvedCoordinates, constraint)
-
- CoordinateVersionHolder resolvedBomCoordinates =
new CoordinateVersionHolder(
- groupId: resolvedCoordinates.groupId,
- artifactId: resolvedCoordinates.artifactId,
- version: resolvedVersion
- )
-
populatePlatformDependencies(resolvedBomCoordinates, exclusionRules,
constraints, error, level + 1)
- } else {
- constraints.put(resolvedCoordinates, constraint)
- }
- }
- }
- }
- } else {
+ List<ManagedDependency> managedDependencies =
readManagedDependencies(doc)
+ if (managedDependencies.isEmpty()) {
if (error) {
// only the boms we directly include need to error since we
expect a dependency management;
// parent boms are sometimes use to share properties so we
need to not error on these cases
throw new GradleException("BOM ${bomCoordinates.coordinates}
has no dependencyManagement section.")
}
+ return versionProperties
+ }
+
+ for (ManagedDependency depItem : managedDependencies) {
+ CoordinateHolder baseCoordinates = new CoordinateHolder(
Review Comment:
Done in c2ac4a6948.
##########
build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy:
##########
@@ -259,91 +261,229 @@ abstract class ExtractDependenciesTask extends
DefaultTask {
Properties populatePlatformDependencies(CoordinateVersionHolder
bomCoordinates, List<CoordinateHolder> exclusionRules, Map<CoordinateHolder,
ExtractedDependencyConstraint> constraints, boolean error = true, int level =
0) {
Dependency bomDependency =
dependencyHandler.create("${bomCoordinates.coordinates}@pom")
Configuration dependencyConfiguration =
configurationContainer.detachedConfiguration(bomDependency)
+ dependencyConfiguration.transitive = false
File bomPomFile = dependencyConfiguration.singleFile
- MavenXpp3Reader reader = new MavenXpp3Reader()
- Model model = reader.read(new FileReader(bomPomFile))
-
+ Document doc = parsePom(bomPomFile)
Properties versionProperties = new Properties()
- if (model.parent) {
- // Need to populate the parent bom if it's present first
- CoordinateVersionHolder parentBom = new CoordinateVersionHolder(
- groupId: model.parent.groupId,
- artifactId: model.parent.artifactId,
- version: model.parent.version
- )
+
+ // Parent POM populated first so its properties can be overridden by
the child
+ CoordinateVersionHolder parentBom = readParentCoordinates(doc)
+ if (parentBom) {
populatePlatformDependencies(parentBom, exclusionRules,
constraints, false, level + 1)?.entrySet()?.each { Map.Entry<Object, Object>
entry ->
versionProperties.put(entry.key, entry.value)
}
}
- model.properties.entrySet().each { Map.Entry<Object, Object> entry ->
- versionProperties.put(entry.key, entry.value)
+
+ readProperties(doc).each { String name, String value ->
+ versionProperties.put(name, value)
}
versionProperties.put('project.groupId', bomCoordinates.groupId)
versionProperties.put('project.version', bomCoordinates.version)
- if (model.dependencyManagement &&
model.dependencyManagement.dependencies) {
- for
(io.spring.gradle.dependencymanagement.org.apache.maven.model.Dependency
depItem : model.dependencyManagement.dependencies) {
- CoordinateHolder baseCoordinates = new CoordinateHolder(
- groupId: depItem.groupId,
- artifactId: depItem.artifactId
- )
-
- CoordinateHolder resolvedCoordinates = new CoordinateHolder(
- groupId:
resolveMavenProperty(baseCoordinates.coordinatesWithoutVersion,
depItem.groupId, versionProperties),
- artifactId:
resolveMavenProperty(baseCoordinates.coordinatesWithoutVersion,
depItem.artifactId, versionProperties)
- )
-
- if (!constraints.containsKey(resolvedCoordinates)) {
- boolean isExcluded = exclusionRules.any { CoordinateHolder
excludedCoordinate ->
- if (excludedCoordinate.groupId &&
excludedCoordinate.artifactId) {
- return resolvedCoordinates == excludedCoordinate
- }
-
- if (excludedCoordinate.groupId &&
!excludedCoordinate.artifactId) {
- return depItem.groupId ==
excludedCoordinate.groupId
- }
-
- if (!excludedCoordinate.groupId &&
excludedCoordinate.artifactId) {
- return depItem.artifactId ==
excludedCoordinate.artifactId
- }
-
- false
- }
-
- if (!isExcluded) {
- String resolvedVersion =
resolveMavenProperty(resolvedCoordinates.coordinatesWithoutVersion,
depItem.version, versionProperties)
- String propertyName = depItem.version.contains('$') ?
depItem.version : null
- ExtractedDependencyConstraint constraint = new
ExtractedDependencyConstraint(
- groupId: resolvedCoordinates.groupId,
artifactId: resolvedCoordinates.artifactId,
- version: resolvedVersion,
versionPropertyReference: propertyName, source: bomCoordinates.artifactId
- )
- if (depItem.scope == 'import') {
- constraints.put(resolvedCoordinates, constraint)
-
- CoordinateVersionHolder resolvedBomCoordinates =
new CoordinateVersionHolder(
- groupId: resolvedCoordinates.groupId,
- artifactId: resolvedCoordinates.artifactId,
- version: resolvedVersion
- )
-
populatePlatformDependencies(resolvedBomCoordinates, exclusionRules,
constraints, error, level + 1)
- } else {
- constraints.put(resolvedCoordinates, constraint)
- }
- }
- }
- }
- } else {
+ List<ManagedDependency> managedDependencies =
readManagedDependencies(doc)
+ if (managedDependencies.isEmpty()) {
if (error) {
// only the boms we directly include need to error since we
expect a dependency management;
// parent boms are sometimes use to share properties so we
need to not error on these cases
throw new GradleException("BOM ${bomCoordinates.coordinates}
has no dependencyManagement section.")
}
+ return versionProperties
+ }
+
+ for (ManagedDependency depItem : managedDependencies) {
+ CoordinateHolder baseCoordinates = new CoordinateHolder(
+ groupId: depItem.groupId,
+ artifactId: depItem.artifactId
+ )
+
+ CoordinateHolder resolvedCoordinates = new CoordinateHolder(
Review Comment:
Done in c2ac4a6948.
##########
build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy:
##########
@@ -259,91 +261,229 @@ abstract class ExtractDependenciesTask extends
DefaultTask {
Properties populatePlatformDependencies(CoordinateVersionHolder
bomCoordinates, List<CoordinateHolder> exclusionRules, Map<CoordinateHolder,
ExtractedDependencyConstraint> constraints, boolean error = true, int level =
0) {
Dependency bomDependency =
dependencyHandler.create("${bomCoordinates.coordinates}@pom")
Configuration dependencyConfiguration =
configurationContainer.detachedConfiguration(bomDependency)
+ dependencyConfiguration.transitive = false
File bomPomFile = dependencyConfiguration.singleFile
- MavenXpp3Reader reader = new MavenXpp3Reader()
- Model model = reader.read(new FileReader(bomPomFile))
-
+ Document doc = parsePom(bomPomFile)
Properties versionProperties = new Properties()
- if (model.parent) {
- // Need to populate the parent bom if it's present first
- CoordinateVersionHolder parentBom = new CoordinateVersionHolder(
- groupId: model.parent.groupId,
- artifactId: model.parent.artifactId,
- version: model.parent.version
- )
+
+ // Parent POM populated first so its properties can be overridden by
the child
+ CoordinateVersionHolder parentBom = readParentCoordinates(doc)
+ if (parentBom) {
populatePlatformDependencies(parentBom, exclusionRules,
constraints, false, level + 1)?.entrySet()?.each { Map.Entry<Object, Object>
entry ->
versionProperties.put(entry.key, entry.value)
}
}
- model.properties.entrySet().each { Map.Entry<Object, Object> entry ->
- versionProperties.put(entry.key, entry.value)
+
+ readProperties(doc).each { String name, String value ->
+ versionProperties.put(name, value)
}
versionProperties.put('project.groupId', bomCoordinates.groupId)
versionProperties.put('project.version', bomCoordinates.version)
- if (model.dependencyManagement &&
model.dependencyManagement.dependencies) {
- for
(io.spring.gradle.dependencymanagement.org.apache.maven.model.Dependency
depItem : model.dependencyManagement.dependencies) {
- CoordinateHolder baseCoordinates = new CoordinateHolder(
- groupId: depItem.groupId,
- artifactId: depItem.artifactId
- )
-
- CoordinateHolder resolvedCoordinates = new CoordinateHolder(
- groupId:
resolveMavenProperty(baseCoordinates.coordinatesWithoutVersion,
depItem.groupId, versionProperties),
- artifactId:
resolveMavenProperty(baseCoordinates.coordinatesWithoutVersion,
depItem.artifactId, versionProperties)
- )
-
- if (!constraints.containsKey(resolvedCoordinates)) {
- boolean isExcluded = exclusionRules.any { CoordinateHolder
excludedCoordinate ->
- if (excludedCoordinate.groupId &&
excludedCoordinate.artifactId) {
- return resolvedCoordinates == excludedCoordinate
- }
-
- if (excludedCoordinate.groupId &&
!excludedCoordinate.artifactId) {
- return depItem.groupId ==
excludedCoordinate.groupId
- }
-
- if (!excludedCoordinate.groupId &&
excludedCoordinate.artifactId) {
- return depItem.artifactId ==
excludedCoordinate.artifactId
- }
-
- false
- }
-
- if (!isExcluded) {
- String resolvedVersion =
resolveMavenProperty(resolvedCoordinates.coordinatesWithoutVersion,
depItem.version, versionProperties)
- String propertyName = depItem.version.contains('$') ?
depItem.version : null
- ExtractedDependencyConstraint constraint = new
ExtractedDependencyConstraint(
- groupId: resolvedCoordinates.groupId,
artifactId: resolvedCoordinates.artifactId,
- version: resolvedVersion,
versionPropertyReference: propertyName, source: bomCoordinates.artifactId
- )
- if (depItem.scope == 'import') {
- constraints.put(resolvedCoordinates, constraint)
-
- CoordinateVersionHolder resolvedBomCoordinates =
new CoordinateVersionHolder(
- groupId: resolvedCoordinates.groupId,
- artifactId: resolvedCoordinates.artifactId,
- version: resolvedVersion
- )
-
populatePlatformDependencies(resolvedBomCoordinates, exclusionRules,
constraints, error, level + 1)
- } else {
- constraints.put(resolvedCoordinates, constraint)
- }
- }
- }
- }
- } else {
+ List<ManagedDependency> managedDependencies =
readManagedDependencies(doc)
Review Comment:
Done in c2ac4a6948.
##########
build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy:
##########
@@ -259,91 +261,229 @@ abstract class ExtractDependenciesTask extends
DefaultTask {
Properties populatePlatformDependencies(CoordinateVersionHolder
bomCoordinates, List<CoordinateHolder> exclusionRules, Map<CoordinateHolder,
ExtractedDependencyConstraint> constraints, boolean error = true, int level =
0) {
Dependency bomDependency =
dependencyHandler.create("${bomCoordinates.coordinates}@pom")
Configuration dependencyConfiguration =
configurationContainer.detachedConfiguration(bomDependency)
+ dependencyConfiguration.transitive = false
File bomPomFile = dependencyConfiguration.singleFile
- MavenXpp3Reader reader = new MavenXpp3Reader()
- Model model = reader.read(new FileReader(bomPomFile))
-
+ Document doc = parsePom(bomPomFile)
Properties versionProperties = new Properties()
- if (model.parent) {
- // Need to populate the parent bom if it's present first
- CoordinateVersionHolder parentBom = new CoordinateVersionHolder(
- groupId: model.parent.groupId,
- artifactId: model.parent.artifactId,
- version: model.parent.version
- )
+
+ // Parent POM populated first so its properties can be overridden by
the child
+ CoordinateVersionHolder parentBom = readParentCoordinates(doc)
Review Comment:
Done in c2ac4a6948.
##########
build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy:
##########
@@ -259,91 +261,229 @@ abstract class ExtractDependenciesTask extends
DefaultTask {
Properties populatePlatformDependencies(CoordinateVersionHolder
bomCoordinates, List<CoordinateHolder> exclusionRules, Map<CoordinateHolder,
ExtractedDependencyConstraint> constraints, boolean error = true, int level =
0) {
Dependency bomDependency =
dependencyHandler.create("${bomCoordinates.coordinates}@pom")
Configuration dependencyConfiguration =
configurationContainer.detachedConfiguration(bomDependency)
+ dependencyConfiguration.transitive = false
File bomPomFile = dependencyConfiguration.singleFile
- MavenXpp3Reader reader = new MavenXpp3Reader()
- Model model = reader.read(new FileReader(bomPomFile))
-
+ Document doc = parsePom(bomPomFile)
Properties versionProperties = new Properties()
Review Comment:
Done in c2ac4a6948 - `doc` and `versionProperties` now use `def`.
##########
build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy:
##########
@@ -259,91 +261,229 @@ abstract class ExtractDependenciesTask extends
DefaultTask {
Properties populatePlatformDependencies(CoordinateVersionHolder
bomCoordinates, List<CoordinateHolder> exclusionRules, Map<CoordinateHolder,
ExtractedDependencyConstraint> constraints, boolean error = true, int level =
0) {
Dependency bomDependency =
dependencyHandler.create("${bomCoordinates.coordinates}@pom")
Review Comment:
Done in c2ac4a6948.
##########
build-logic/docs-core/src/main/groovy/org/apache/grails/gradle/tasks/bom/ExtractDependenciesTask.groovy:
##########
@@ -259,91 +261,229 @@ abstract class ExtractDependenciesTask extends
DefaultTask {
Properties populatePlatformDependencies(CoordinateVersionHolder
bomCoordinates, List<CoordinateHolder> exclusionRules, Map<CoordinateHolder,
ExtractedDependencyConstraint> constraints, boolean error = true, int level =
0) {
Dependency bomDependency =
dependencyHandler.create("${bomCoordinates.coordinates}@pom")
Configuration dependencyConfiguration =
configurationContainer.detachedConfiguration(bomDependency)
+ dependencyConfiguration.transitive = false
Review Comment:
Done in c2ac4a6948 - applied your `detachedConfiguration(...).tap {}`
suggestion.
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]