Nhận danh sách các phụ thuộc maven của org.apache.maven.project.MavenProject


10

Tôi đang cố gắng để có được một danh sách các phụ thuộc của một số đồ tạo tác bằng cách sử dụng org.apache.maven.project.MavenProject.

Mã của tôi là như thế này.

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

Về cơ bản, tôi đang cố gắng để có được kết quả cây phụ thuộc trả về bằng mvn dependency:treelệnh theo danh sách theo chương trình.

Ví dụ cho các hiện vật:

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

Danh sách phụ thuộc:

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
]

Câu hỏi tương tự được trả lời bởi Tunaki tại stackoverflow.com/questions/39638138/
Kẻ

@NikhilZurunge Nhưng ở đây tôi không muốn tạo một dự án maven bằng cách tạo một tệp pom. Tôi muốn sử dụngorg.apache.maven.project.MavenProject
Pramodya Mendis

Thông tin chỉ có sẵn trong quá trình xây dựng maven, có nghĩa là trong ngữ cảnh của plugin maven. Nếu bạn chỉ đơn giản đọc tệp pom bạn không có những thông tin đó .... Không có giải pháp phụ thuộc Quản lý (nếu bạn sử dụng nó), v.v.
khmarbaise

Tôi muốn biết có bất kỳ phương thức hoặc lớp java nào để giải quyết các phụ thuộc từ MavenProjectđối tượng
Pramodya Mendis

Câu trả lời:


1

Bạn có thể sử dụng phương pháp public Set<Artifact> getArtifacts()của bạnMavenProject lớp để trả về một tập hợp các tạo phẩm đại diện cho tất cả các phụ thuộc mà dự án có, bao gồm cả các phương thức bắc cầu.

Lưu ý: Nội dung được điền một cách lười biếng, do đó tùy thuộc vào giai đoạn nào đã chạy phụ thuộc trong một số phạm vi sẽ không được đưa vào. ví dụ. nếu chỉ có giai đoạn biên dịch chạy, các phụ thuộc với kiểm tra phạm vi sẽ không được đưa vào.

Tất cả các thông tin đến từ các tài liệu mà bạn có thể tìm thấy ở đây .


2
Tôi đoán bạn cho rằng mã sẽ chạy trong quá trình xây dựng Maven (dưới dạng plugin Maven), nhưng OP muốn chạy nó bên ngoài chạy Maven.
JF Meier

@JFMeier vâng, bạn nói đúng. Có vẻ như tôi không có giải pháp cho trường hợp sử dụng này: /
Pramodya Mendis
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.