获取org.apache.maven.project.MavenProject的Maven依赖项列表


10

我试图使用列出一些Maven工件的依赖项org.apache.maven.project.MavenProject

我的代码是这样的。

public List<Dependencies> loadProject() {
    Model mavenModel = new Model();
    mavenModel.setModelVersion("4.0.0");
    mavenModel.setGroupId("org");
    mavenModel.setArtifactId("wso2");
    mavenModel.setVersion("1.0.0");

    addDependency(mavenModel, "com.google.inject", "guice", "4.2.2");
    addDependency(mavenModel, "ch.qos.logback", "logback-classic", "1.2.3");

    MavenProject mavenProject = new MavenProject(mavenModel);

    //******* Need to resolve dependencies of `mavenProject` and *******
    //******* get the list of dependencies of this project.    *******

    return dependencies;
}

private static void addDependency(Model mavenModel, String groupId, String artifactId, String version) {


Dependency dependency = new Dependency();
    dependency.setGroupId(groupId);
    dependency.setArtifactId(artifactId);
    dependency.setVersion(version);
    mavenModel.addDependency(dependency);
}

基本上,我试图获取依存关系树结果,该结果mvn dependency:tree以编程方式通过命令作为列表返回。

示例 对于工件:

  • com.google.inject:guide:4.2.2
  • ch.qos.logback:logback-classic:1.2.3

依赖项列表:

List = [
com.google.inject:guice:jar:4.2.2:compile,
javax.inject:javax.inject:jar:1:compile,
aopalliance:aopalliance:jar:1.0:compile,
com.google.guava:guava:jar:25.1-android:compile,
com.google.code.findbugs:jsr305:jar:3.0.2:compile,
org.checkerframework:checker-compat-qual:jar:2.0.0:compile,
com.google.errorprone:error_prone_annotations:jar:2.1.3:compile,
com.google.j2objc:j2objc-annotations:jar:1.1:compile,
org.codehaus.mojo:animal-sniffer-annotations:jar:1.14:compile,
ch.qos.logback:logback-classic:jar:1.2.3:compile,
ch.qos.logback:logback-core:jar:1.2.3:compile,
org.slf4j:slf4j-api:jar:1.7.25:compile
]


@NikhilZurunge但是在这里我不想通过创建pom文件来创建Maven项目。我要使用org.apache.maven.project.MavenProject
Pramodya Mendis

该信息仅在maven构建期间可用,这意味着在maven插件的上下文中。如果你只是看你没有这些信息的POM文件....没有dependencyManagement的分辨率(如果使用的话)等等
khmarbaise

我想知道是否有任何Java方法或类可以解决MavenProject对象的依赖关系
Pramodya Mendis

Answers:


1

您可以使用类的方法public Set<Artifact> getArtifacts(),该方法MavenProject返回一组工件,这些工件表示项目具有的所有依赖项,包括可传递的依赖项。

注意:内容是懒散填充的,因此根据运行阶段的不同,在某些范围内将不包括依赖项。例如。如果仅运行了编译阶段,则不会包含具有范围测试的依赖项。

所有信息均来自您可以在此处找到的文档。


2
我猜您假设代码应该在Maven构建期间运行(作为Maven插件),但是OP希望在Maven运行之外运行它。
JF Meier

@JFMeier是的,你是对的。似乎我没有针对该用例的解决方案:/
Pramodya Mendis,
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.