如何在maven3

时间:2015-04-22 12:25:57

标签: java maven-3

我想用Java自动化部分构建系统。为此,我需要计算给定文件树中存在的源的依赖关系树。

所以,我想抓取一组目录并找到那里存在的pom.xml个文件。这很好。然后我想将这些文件解析为MavenProject的实例,以便我可以调用getParent()getDependencies()等等。

所以,问题是:如何使用maven3库获得完全填充的MavenProject?如果有必要,我可以包含第三方库,但更喜欢由maven natives组成的解决方案。

我已阅读Get MavenProject from just the POM.xml - pom parser?,但那里的答案对我不起作用(MavenProject未正确填充)

我的代码是用Java编写的,所以我希望得到像这样的方法的内容:

private MavenProject makeProjectFromPom(File pomXML) {
    // Here is what I don't know.
}

所以我可以在我的程序中做这样的事情:

public List<MavenProject> getAllMavenProjectsWithParent(File rootDir, MavenProject parent) {
   List<File> allPoms = findAllPoms(rootDir);
   List<MavenProject> result = new ArrayList<>();
   for(File nextPom : allPoms) {
       MavenProject next = makeProjectFromPom(nextPom);
       if(next.hasParent() && next.getParent().equals(parent))
           result.add(next);
   }
   return result;
}

这只是一个例子,但对我来说暂时不起作用。

在Maven2中,我可以这样做:

    String basePath = "somepath";
    MavenEmbedder embedder = new MavenEmbedder();
    File basedir = new File(basePath);
    final List<File> allDirsWithPomXML = new ArrayList<>();
    // the next line crawls through the directory and collects references to pom.xml paths.
    gatherPomXMLPaths(basedir, allDirsWithPomXML);
    embedder.setClassLoader(this.getClass().getClassLoader());
    embedder.start();
    List<MavenProject> collectedProjects = new ArrayList<>();
    for (File nextDir : allDirsWithPomXML) {
        collectedProjects.addAll(embedder.collectProjects(nextDir, new String[]{"pom.xml"}, new String[0]));
    }

MavenProject中的collectedProjects引用现在将包含父,依赖等信息。

0 个答案:

没有答案