I'm interested in that problem too. In the project below, we use PlexusContainer to instantiate MavenProject class from pom file: https://github.com/GoogleCloudPlatform/cloud-opensource-java/blob/master/dependencies/src/main/java/com/google/cloud/tools/opensource/dependencies/RepositoryUtility.java#L209
I hope there's a better way to achieve this. On Thu, Apr 16, 2020 at 6:55 AM Andres Almiray <aalmi...@gmail.com> wrote: > Hi, > > I'm looking for a way to launch Maven programmatically in such a way that I > can get access to fully resolved Model and MavenProject instances, and not > just for a single project but also for all projects that belong to a > Reactor. > > At first I used this code > > try { > FileReader reader = new FileReader(pom); > MavenXpp3Reader mavenReader = new MavenXpp3Reader(); > return new MavenProject(mavenReader.read(reader)); > } catch (Exception e) { > throw new IllegalArgumentException(e); > } > > But of course that's not enough. Next I tried using the maven-model-builder > APIs directly but not all references get resolved (such as parent POMs) as > a custom ModelResolver is required and the default one is not intended to > be used in standalone fashion. > > Ideally I would call some sort of embeddable Maven API that can give me the > answers I seek, something like this > > MavenProject project = EmbeddableMaven.launch(propsOrFlags).file(pomFile); > > or alternatively something like > > MavenReactor reactor = EmbeddableMaven.launch(propsOrFlags).file(pomFile); > for(MavenProject project : reactor.getProjects()) { /* do stuff */ } > > Of course I'm making up these types and method names as I do not know if > something like this exist or not, hence why I'm asking here. > > Thanks in advance. > > Cheers > Andres > -- Regards, Tomo