给定一个 Maven 工件 (groupId:artifactId:version),我如何以编程方式查询它的依赖项?(我实际上不需要检索任何工件,只需要依赖信息。)
编辑添加我想在 Maven 插件之外执行此操作,并且我想建立一个依赖关系图。
以下 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
如果您使用的是 maven 插件(即:扩展 AbstractMojo),您可以执行以下操作:
/**
* @parameter expression="${project}"
*/
private org.apache.maven.project.MavenProject mavenProject;
List<org.apache.maven.model.Dependency> depmgtdeps = mavenProject.getDependencyManagement().getDependencies();
这将为您提供它检测到的实际依赖对象。MavenProject 类还有许多其他方法用于读取各种与 pom 相关的内容。但是,我不相信这在插件之外有效,或者至少,我从未尝试过这样做。
我发现这两个链接很有帮助..