以编程方式检索Maven依赖关系图

时间:2012-06-25 12:57:18

标签: java maven ivy

鉴于Maven工件(groupId:artifactId:version),我如何以编程方式查询其依赖项? (我不需要实际检索任何工件,只需要依赖信息。)

编辑添加我想在Maven插件之外执行此操作,并且我想构建一个依赖关系图。

3 个答案:

答案 0 :(得分:1)

如果你正在使用maven插件(即:扩展AbstractMojo),你可以执行以下操作:

  /**
   * @parameter expression="${project}"
   */
  private org.apache.maven.project.MavenProject mavenProject;

  List<org.apache.maven.model.Dependency> depmgtdeps = mavenProject.getDependencyManagement().getDependencies();

这将为您提供它检测到的实际依赖项对象。 MavenProject类还有许多其他方法可用于读取各种与pom相关的内容。但是,我不认为这可以在插件之外工作,或者至少,我从未尝试过这样做。

答案 1 :(得分:1)

答案 2 :(得分:1)

以下groovy脚本使用ivy来解决依赖关系

import groovy.xml.NamespaceBuilder

// Main program
// ============
def ant = new AntBuilder()
def ivy = NamespaceBuilder.newInstance(ant, "antlib:org.apache.ivy.ant")

ivy.resolve(
    inline:true,
    keep:true,
    conf:"default",
    organisation:"org.springframework",
    module:"spring-core",
    revision:"3.1.1.RELEASE",
)

ivy.report(toDir:"reports")

生成HTML报告和graphml文件:

|-- report.groovy
|-- reports
|   |-- ivy-report.css
|   |-- org.springframework-spring-core-caller-default.graphml
|   `-- org.springframework-spring-core-caller-default.html