How can I access Maven Artifact POM using Maven's Java API?

java, maven

Solution

Actually you were pretty close to reading the dependencies. All that was missing was:

Model model = mavenreader.read(new FileReader(pomFile));

Full example:

MavenXpp3Reader mavenreader = new MavenXpp3Reader();

File pomfile = new File("pom.xml");
Model model = mavenreader.read(new FileReader(pomFile));

List<Dependency> deps = model.getDependencies();

for (Dependency d: deps) {          
    System.out.print(d.getArtifactId());
} 

This doesn't get you a dependency tree but you can repeat it for the dependencies you find.

Problem

I am attempting to retrieve the entire dependency tree and their poms starting at the root of the project. I am starting with a POM already existing in my file system, but I'm not sure how to retrieve the dependency poms from the repository. I am using the following code to access the dependency list. From the list I have all the information on the artifacts. I'm just not sure how to access the repository. ``` FileReader reader = null; Model model = null; MavenXpp3Reader mavenreader = new MavenXpp3Reader(); File pomfile = new File("pom.xml"); model.setPomFile(pomfile); MavenProject project = new MavenProject(model); List<Dependency> deps = project.getDependencies(); // Get dependency details for (Dependency d: deps) { System.out.print(d.getArtifactId()); System.out.print(":"); System.out.println(d.getVersion()); } ```

Original source