4

给定一个 Maven 工件 (groupId:artifactId:version),我如何以编程方式查询它的依赖项?(我实际上不需要检索任何工件,只需要依赖信息。)

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

4

3 回答 3

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
于 2012-06-25T21:29:04.970 回答
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 相关的内容。但是,我不相信这在插件之外有效,或者至少,我从未尝试过这样做。

于 2012-06-25T13:29:14.877 回答
1

我发现这两个链接很有帮助..

  1. 用于检索依赖项的 Maven 插件
  2. 使用 Eclipse 插件
于 2012-06-25T13:30:28.127 回答