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: [email protected]
For additional commands, e-mail: [email protected]