รับรายการการพึ่งพา Maven ของ org.apache.maven.project.MavenProject


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
]

คำถามที่คล้ายกันตอบโดย Tunaki ที่stackoverflow.com/questions/39638138/ …
Nikhil Zurunge

@NikhilZurunge แต่ที่นี่ฉันไม่ต้องการสร้างโครงการ Maven ด้วยการสร้างไฟล์ pom ฉันต้องการใช้org.apache.maven.project.MavenProject
Pramodya Mendis

ข้อมูลจะใช้ได้เฉพาะในระหว่างการสร้าง maven ซึ่งหมายถึงในบริบทของปลั๊กอิน maven หากคุณเพียงแค่อ่านไฟล์ pom คุณไม่มีข้อมูลเหล่านั้น .... ไม่มีความละเอียดของการจัดการการพึ่งพา (ถ้าคุณใช้มัน) ฯลฯ
khmarbaise

ฉันต้องการที่จะรู้ว่ามีวิธีการจาวาหรือชั้นเรียนเพื่อแก้ไขการพึ่งพาจากMavenProjectวัตถุ
Pramodya Mendis

คำตอบ:


1

คุณสามารถใช้วิธีการเรียนpublic Set<Artifact> getArtifacts()ของคุณMavenProjectซึ่งส่งคืนชุดของสิ่งประดิษฐ์ที่แสดงถึงการพึ่งพาทั้งหมดที่โครงการมีรวมถึงวัตถุสกรรมกริยา

หมายเหตุ: เนื้อหามีประชากรที่ขี้เกียจดังนั้นขึ้นอยู่กับว่าเฟสใดที่มีการขึ้นต่อกันที่ทำงานในขอบเขตบางอย่างจะไม่ถูกรวม เช่น. ถ้ามีเพียงการคอมไพล์เฟสเท่านั้นที่ทำงานการอ้างอิงกับการทดสอบขอบเขตจะไม่รวมอยู่

ข้อมูลทั้งหมดจะมาจากเอกสารที่คุณสามารถหาได้ที่นี่


2
ฉันเดาว่าคุณคิดว่ารหัสควรทำงานในระหว่างการสร้าง Maven (เป็นปลั๊กอิน Maven) แต่ OP ต้องการเรียกใช้นอกการทำงาน Maven
JF Meier

@JFMeier ใช่คุณพูดถูก ดูเหมือนว่าฉันไม่มีวิธีแก้ปัญหาสำหรับกรณีการใช้งานนี้: /
Pramodya Mendis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.