Ok I’ve found a way but it looks complex… Please let me know if there’s a simpler way.
So I’ve copied the DefaultModelResolver.java class from maven sources (since it’s package private I couldn’t reuse it!) into my own sources, and then used what I mentioned below: private void getArtifactDependenciesFromPOMFile(List<RemoteRepository> remoteRepositories, RepositorySystem repoSystem, RepositorySystemSession session) throws Exception { ModelResolver resolver = new DefaultModelResolver(session, null, null, this.artifactResolver, this.versionRangeResolver, this.remoteRepositoryManager, remoteRepositories); DefaultModelBuildingRequest modelBuildingRequest = new DefaultModelBuildingRequest() .setPomFile(new File("./pom.xml")) .setModelResolver(resolver); ModelBuilder modelBuilder = new DefaultModelBuilderFactory().newInstance(); ModelBuildingResult modelBuildingResult = modelBuilder.build(modelBuildingRequest); Model model = modelBuildingResult.getEffectiveModel(); … } Is that the only way? Thanks -Vincent > On 20 Jul 2018, at 16:56, Vincent Massol <vmas...@gmail.com> wrote: > > Hi guys, > > I’ve been trying to find how to programmatically resolve dependencies from a > pom.xml file by using the Maven Resolver API > (https://github.com/apache/maven-resolver). > > So far I’ve succeeded in resolving dependencies from an Artifact but I > haven’t found how to do by reading from a pom.xml file. > > The closest I have founds is the following but it’s not working & it’s not > using the Resolver API (and thus the passed parameters): > > private void getArtifactDependenciesFromPOMFile(List<RemoteRepository> > remoteRepositories, RepositorySystem repoSystem, > RepositorySystemSession session) throws Exception > { > DefaultModelBuildingRequest modelBuildingRequest = new > DefaultModelBuildingRequest() > .setPomFile(new File("./pom.xml”)); > ModelBuilder modelBuilder = new DefaultModelBuilderFactory().newInstance(); > ModelBuildingResult modelBuildingResult = > modelBuilder.build(modelBuildingRequest); > Model model = modelBuildingResult.getEffectiveModel(); > } > > It’s failing with: > > java.lang.NullPointerException: request.modelResolver cannot be null (parent > POM org.xwiki.platform:xwiki-platform-test:10.6-SNAPSHOT and POM > org.xwiki.platform:xwiki-platform-test-war:[unknown-version] > (/Users/vmassol/dev/xwiki/xwiki-platform/xwiki-platform-core/xwiki-platform-test/xwiki-platform-test-war/./pom.xml)) > > at org.apache.commons.lang3.Validate.notNull(Validate.java:225) > at > org.apache.maven.model.building.DefaultModelBuilder.readParentExternally(DefaultModelBuilder.java:994) > > I assume that’s because it needs some MavenResolver at: > > DefaultModelBuildingRequest modelBuildingRequest = new > DefaultModelBuildingRequest() > .setPomFile(new File("./pom.xml”)) > .setResolver(“… what to put here?…”) > > Is there another approach? > > Thanks > -Vincent > > PS: I’ve tried using ShrinkWrap but it’s not working for me, see > https://massol.myxwiki.org/xwiki/bin/view/Blog/ResolveMavenArtifactsShrinkWrap > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@maven.apache.org For additional commands, e-mail: users-h...@maven.apache.org