Org.apache.maven.project.MavenProject'in maven bağımlılıklarının listesini alın


10

Kullanarak bazı maven eserler bağımlılıkların bir listesini almaya çalışıyorum org.apache.maven.project.MavenProject.

Kodum böyle.

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);
}

Temelde mvn dependency:treekomut tarafından programlı bir liste olarak döndüren bağımlılık ağacı sonuçları almaya çalışıyorum .

Örnek Eserler için:

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

Bağımlılık listesi:

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 Ama burada bir pom dosyası oluşturarak bir maven projesi oluşturmak istemiyorum. org.apache.maven.project.MavenProject
Kullanmak

Bilgiler sadece bir maven eklentisi bağlamında bir maven derlemesi sırasında mevcuttur. Eğer pom dosyasını okursanız bu bilgilere sahip değilsiniz. (Eğer kullanıyorsanız)
dependsencyManagement

Ben gelen çözülmesine bağımlılıkları herhangi bir java yöntemi veya sınıf yoktur bilmek istiyorum MavenProjectnesne
Pramodya Mendis

Yanıtlar:


1

Sen yöntemi kullanabilirsiniz public Set<Artifact> getArtifacts()senin içinde MavenProjectgeçişli olanlar dahil proje olduğunu tüm bağımlılıkları, temsil eserler kümesi döndüren sınıfın.

Not: İçindekiler tembel bir şekilde doldurulur, bu nedenle bazı aşamalarda hangi fazların çalışma bağımlılıklarına bağlı olarak dahil edilmez. Örneğin. yalnızca derleme aşaması çalıştırıldıysa, kapsam testine bağımlılıklar dahil edilmez.

Tüm bilgiler burada bulabileceğiniz belgelerden geliyor .


2
Kodun bir Maven derlemesi (Maven eklentisi olarak) sırasında çalışması gerektiğini varsayalım, ancak OP bunu Maven çalıştırmasının dışında çalıştırmak istiyor.
JF Meier

@JFMeier evet, haklısın. Bu kullanım durumu için bir çözümüm yok gibi görünüyor: /
Pramodya Mendis
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.