Hi Sandra,
first question: Do you need the full resolved pom (effective pom) or
would it be enough just to simply to parse the pom file which can simply
being done using MavenXpp3Reader this would deliver the XML as a Maven
Model class which can simply being used to extract information from the
maven model...
Kind regards
Karl Heinz Marbaise
On 09/08/17 13:00, spars...@web.de wrote:
Hello,
currently, I'm working on a small tool, that needs some information of a POM
and its parent POM. I didn't want to parse them with a XML reader, so I found
that the DefaultModelBuilder can build a complete effective POM for me. Based
on a stackoverflow answer
(https://stackoverflow.com/questions/27383357/how-do-i-instantiate-mavenresolver-for-modelbuilder-usage)
I build following example:
DefaultModelBuilderFactory factory = new DefaultModelBuilderFactory();
final DefaultModelBuilder defaultModelBuilder = factory.newInstance();
ModelBuildingRequest buildRequest = new DefaultModelBuildingRequest();
buildRequest.setPomFile(Paths.get("/path/to/a/pom.xml").toFile())
.setProcessPlugins(false)
.setValidationLevel(ModelBuildingRequest.VALIDATION_LEVEL_MINIMAL);
final ModelBuildingResult modelBuildingResult =
defaultModelBuilder.build(buildRequest);
It works fine for simple POM (simple means a POM without a parent reference). But if I set a POM with a parent reference in buildRequest.setPomFile, I get following exception:
Exception in thread "main" java.lang.IllegalArgumentException: no model
resolver provided, cannot resolve parent POM groupId:artifactId:1 for POM
groupId:artifactId:version (/path/to/a/pom.xml)
at
org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:890)
at
org.apache.maven.model.building.DefaultModelBuilder.readParent(DefaultModelBuilder.java:750)
at
org.apache.maven.model.building.DefaultModelBuilder.build(DefaultModelBuilder.java:309)
at
com.github.sparsick.maven.effecitve.pom.maven.model.builder.ApacheMavenModelBuilder.main(ApacheMavenModelBuilder.java:17)
Another example on Stackoverflow
(https://stackoverflow.com/questions/4838591/is-there-a-library-for-reading-maven2-3-pom-xml-files)
mentions to use RepositoryModelResolver from Apache Archiva as an
implementation ModelResolver. But I don't want to introduce a dependency to
Apache Archiva in my tool.
So my questions are, is the usage of DefaultModelBuilder the best way to get an
effective POM of my project outside of a Maven Plugin? If so which
implementation I should use for the ModelResolver? If not what is the best way
to get the effective POM outside of a Maven Plugin.
Thank you and best regards,
Sandra Parsick
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org
---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org