鑑於Maven工件(groupId:artifactId:版本),我如何以編程方式查詢其依賴關係? (我不需要實際檢索任何工件,只需要依賴信息。)以編程方式檢索Maven依賴關係圖
編輯即可添加我想在Maven插件之外執行此操作,並且我想構建一個依賴關係圖。
鑑於Maven工件(groupId:artifactId:版本),我如何以編程方式查詢其依賴關係? (我不需要實際檢索任何工件,只需要依賴信息。)以編程方式檢索Maven依賴關係圖
編輯即可添加我想在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腳本使用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插件,而是獨立應用程序。也許還有另一種方法來獲得MavenProject ... –
我不確定是否有。有一個構造函數需要一個Model,但是你真的沒有一個很好的方法來獲得其中的一個。你能提供更多關於你想要完成的事情嗎?可能是另一種做你想做的事情的方式。 – Michael
我想構建各種Maven artefact的依賴關係圖來測試驅動器的圖形佈局算法。 –