initial
This commit is contained in:
@@ -0,0 +1,39 @@
|
||||
// Based on https://stackoverflow.com/a/42160584/453052
|
||||
|
||||
project.ext.buildPomXmlDependencies = { pom, configurations ->
|
||||
pom.withXml {
|
||||
final rootNode = asNode().appendNode('dependencies')
|
||||
addConfigurationDependencies(rootNode, configurations.api, 'compile')
|
||||
addConfigurationDependencies(rootNode, configurations.compile, 'compile')
|
||||
addConfigurationDependencies(rootNode, configurations.implementation, 'runtime')
|
||||
}
|
||||
}
|
||||
|
||||
private static def addConfigurationDependencies(rootNode, Configuration configuration, String scope) {
|
||||
configuration.dependencies.each { dep -> addChildDependency(rootNode, dep, scope) }
|
||||
}
|
||||
|
||||
private static def addChildDependency(rootNode, Dependency dep, String scope) {
|
||||
if (dep.group == null || dep.version == null || dep.name == null || dep.name == "unspecified")
|
||||
return
|
||||
|
||||
final childNode = rootNode.appendNode('dependency')
|
||||
childNode.appendNode('groupId', dep.group)
|
||||
childNode.appendNode('artifactId', dep.name)
|
||||
childNode.appendNode('version', dep.version)
|
||||
childNode.appendNode('scope', scope)
|
||||
|
||||
if (!dep.transitive) {
|
||||
// If this dependency is transitive, we should force exclude all its dependencies them from the POM
|
||||
final exclusionNode = childNode.appendNode('exclusions').appendNode('exclusion')
|
||||
exclusionNode.appendNode('groupId', '*')
|
||||
exclusionNode.appendNode('artifactId', '*')
|
||||
} else if (!dep.properties.excludeRules.empty) {
|
||||
// Otherwise add specified exclude rules
|
||||
final exclusionNode = childNode.appendNode('exclusions').appendNode('exclusion')
|
||||
dep.properties.excludeRules.each { ExcludeRule rule ->
|
||||
exclusionNode.appendNode('groupId', rule.group ?: '*')
|
||||
exclusionNode.appendNode('artifactId', rule.module ?: '*')
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user