给定一个Maven构件(的groupId:artifactId的:版本),我怎么能编程方式查询其依赖? (我实际上并不需要检索任何文物,仅仅是依赖信息。)
编辑补充 ,我想这样做一个Maven插件之外,我想建立一个依赖图。
给定一个Maven构件(的groupId:artifactId的:版本),我怎么能编程方式查询其依赖? (我实际上并不需要检索任何文物,仅仅是依赖信息。)
编辑补充 ,我想这样做一个Maven插件之外,我想建立一个依赖图。
如果您使用的是Maven插件(即:延长AbstractMojo),你可以做到以下几点:
/**
* @parameter expression="${project}"
*/
private org.apache.maven.project.MavenProject mavenProject;
List<org.apache.maven.model.Dependency> depmgtdeps = mavenProject.getDependencyManagement().getDependencies();
这会给你它检测到的实际依赖的对象。 该MavenProject类有阅读各种POM相关的东西一堆其他的方法为好。 不过,我不相信这个工作的插件之外,或者至少,我从来没有尝试这样做。
我发现这两个环节有帮助..
以下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