Hi all, I'm looking to write some tooling that integrates with maven by programatically interrogating the build to get, for example, a list of projects, their transitive dependencies, etc. What I don't want to do is reimplement maven - I don't want to parse the pom file myself and resolve dependencies myself. So I'd like to programatically instantiate maven and ask it questions about the structure and state of the build.
The main entry point into Maven seems to be MavenCli, but its public method, doMain(), simply returns an integer return code, which is no use for programmatic interrogation. So, in order to programatically interrogate a maven build, eg get the list of projects, resolve the dependencies etc, I think I have to completely copy most of the code in MavenCli, which is a lot of code including a lot of implementation detail that seems like something that tooling shouldn't have to be concerned with, and is potentially quite fragile to future changes in Maven. So far I've done this and it's at least partially working, but it just feels so wrong. Is there any simpler/safer way to do this? I guess I could create a maven plugin that captured the state that I want to return back to my tooling in a static variable after submitting an execution request to MavenCli that executed a task provided by the plugin, but that seems like a very hacky way of doing things - is there any API that would allow me to simply ask maven for a fully initialized plexus container, for example? How do other tools do this kind of integration, eg Eclipse or IntelliJ? Cheers, James -- *James Roper* *Software Engineer* Lightbend <https://www.lightbend.com/> – Build reactive apps! Twitter: @jroper <https://twitter.com/jroper>
