以编程方式检索Maven的依赖关系图(Programmatically retrieve Maven

2019-09-18 11:46发布

给定一个Maven构件(的groupId:artifactId的:版本),我怎么能编程方式查询其依赖? (我实际上并不需要检索任何文物,仅仅是依赖信息。)

编辑补充 ,我想这样做一个Maven插件之外,我想建立一个依赖图。

Answer 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相关的东西一堆其他的方法为好。 不过,我不相信这个工作的插件之外,或者至少,我从来没有尝试这样做。



Answer 2:

我发现这两个环节有帮助..

  1. 一个Maven插件用于检索的依赖
  2. 使用Eclipse插件


Answer 3:

以下Groovy脚本使用常青藤解决依赖性

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


文章来源: Programmatically retrieve Maven dependency graph
标签: java maven ivy