Hi Folks,
I try to access the parent POM of a Maven Module via the ArtifactResolutionQuery API.
Therefore I query the POM file of the module and then parse the POM for a parent element.
When found I build a ModuleComponentIdentifier with the corresponding coordinates of the parent.
Unfortunatley the Query API is not able to resolve the MavenPomArtifact of this new component.
My code for retrieving the parent pom is
void resolveParentPom(File pomFile) {
def pom = new XmlParser().parse(pomFile)
if (!pom.parent) {
return
}
def identifier = new MavenPomComponentIdentifier(
group: pom.parent.groupId.text(),
module: pom.parent.artifactId.text(),
version: pom.parent.version.text()
)
def result = project.dependencies.createArtifactResolutionQuery().forComponents(identifier)
.withArtifacts(MavenModule, MavenPomArtifact)
.execute()
result.resolvedComponents.each { component ->
ModuleComponentIdentifier id = component.id
component.getArtifacts(MavenPomArtifact).each { ResolvedArtifactResult artifact ->
// Do something useful
println artifact
resolveParentPom(artifact.file)
}
}
}
the class MavenPomComponentIdentifier is:
class MavenPomComponentIdentifier implements ModuleComponentIdentifier {
String group
String module
String version
@Override
String getDisplayName() {
return "$group:$module:$version"
}
}
Am I missing something, or is it just not possible to query artifacts of pom-only modules?