2012-11-02 13 views
5

Điều này tương tự như các câu hỏi khác (like this), nhưng tôi muốn có thể thực hiện việc này với API mới nhất. Plugin maven-dependency-plugin: tùy chọn verbose cây đã không được chấp nhận và không làm gì trong mã (2.5.1) mới nhất, vì vậy không có ví dụ hay về cách thực hiện.Làm thế nào để lập trình danh sách tất cả các phụ thuộc transitive, bao gồm cả những người bị ghi đè trong Maven bằng cách sử dụng DependencyGraphBuilder?

+0

Hiện tại, Aet mới cô ấy được sử dụng trong này không cung cấp thông tin như vậy. Chỉ các phiên bản cũ hơn của plugin phụ thuộc maven cung cấp thông tin đó (http://maven.40175.n5.nabble.com/maven-dependency-plugin-Questions-td5729997.html). – khmarbaise

+0

Tôi đoán điều đó có nghĩa là câu trả lời ngắn gọn là không thể thực hiện được vào lúc này. Ít nhất cho đến khi Hervé có thể là một giải pháp vào maven-core. – Ben

Trả lời

3

Tôi tin Aether tiện ích lớp từ jcabi-aether có thể giúp bạn để có được một danh sách tất cả phụ thuộc của bất kỳ vật Maven, ví dụ:

File repo = this.session.getLocalRepository().getBasedir(); 
Collection<Artifact> deps = new Aether(this.getProject(), repo).resolve(
    new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"), 
    JavaScopes.RUNTIME 
); 

Nếu bạn đang ở bên ngoài Maven plugin:

File repo = new File("/tmp/local-repository"); 
MavenProject project = new MavenProject(); 
project.setRemoteProjectRepositories(
    Arrays.asList(
    new RemoteRepository(
     "maven-central", 
     "default", 
     "http://repo1.maven.org/maven2/" 
    ) 
) 
); 
Collection<Artifact> deps = new Aether(project, repo).resolve(
    new DefaultArtifact("junit", "junit-dep", "", "jar", "4.10"), 
    "runtime" 
); 

Phụ thuộc duy nhất bạn cần là:

<dependency> 
    <groupId>com.jcabi</groupId> 
    <artifactId>jcabi-aether</artifactId> 
    <version>0.7.5</version> 
</dependency> 
+0

Được rồi ... Và làm thế nào điều này sẽ làm việc nếu bạn muốn sử dụng nó trên một 'MavenProject.getArtifact'? Có cách nào để làm điều đó? (Tôi đã yêu cầu điều này ở đây: http://stackoverflow.com/questions/16480314/get-all-the-dependencies-of-a-mavenproject-including-transitive-ones-using-aet). – carlspring

+0

Hãy thử sử dụng một lớp tiện ích ['Classpath'] (http://www.jcabi.com/jcabi-aether/apidocs-0.7.19/com/jcabi/aether/Classpath.html) từ [' jcabi-aether' ] (http://www.jcabi.com/jcabi-aether/example-classpath.html) (Tôi đã trả lời câu hỏi khác của bạn) – yegor256

Các vấn đề liên quan