2010-11-03 30 views
43

Cách tạo biểu đồ phụ thuộc giữa tất cả các mô-đun của dự án Maven (trừ các thư viện của bên thứ ba như JUnit, SLF4J, v.v.)? Tôi không thể tìm thấy cách để bao gồm tất cả các mô-đun vào một đồ thị bằng cách sử dụng m2eclipse. Cảm ơn.Cách tạo biểu đồ phụ thuộc giữa tất cả các mô-đun của dự án Maven?

+2

Trong IntelliJ, bạn có thể có một cái nhìn cây về phụ thuộc bằng cách nhấp chuột phải vào tệp pom.xml trên cùng và chọn ** Phân tích ** -> ** Phân tích phụ thuộc mô-đun **. Thêm dưới dạng nhận xét vì nó hoạt động tốt mà không cần thư viện hoặc cấu hình cần thiết. –

+0

@PatrickM ngoại trừ nó có [vấn đề mở] (https://github.com/janssk1/maven-graph-plugin/issues/3) để được hỗ trợ mô-đun. – OrangeDog

Trả lời

25

Nếu phụ thuộc Graph tính năng của m2eclipse không bao gồm nhu cầu của bạn, có thể có một cái nhìn tại Maven Graph Plugin và đặc biệt là mục tiêu graph:reactor của nó.

CẬP NHẬT: các tính năng phụ thuộc Graph là loại bỏ trong m2eclipse 1.0. Để biết thêm thông tin, hãy xem: Maven POM-Editor: Dependency Graph missing

+3

Tôi thích đồ thị: lò phản ứng, nhưng tôi không thấy bất kỳ cách nào để loại trừ các phụ thuộc của bên thứ ba. – Raman

+0

Mặc dù tôi thích câu trả lời, tôi không thấy cách nào để loại trừ phụ thuộc bên thứ 3 khỏi biểu đồ như @Raman nói. Chúng ta đang thiếu cái gì đó hay chỉ là không thể? – Brambo

+1

Ngoài ra, nó là đồ thị quá xấu: lò phản ứng không có một chế độ đầu ra graphml, tương tự như 'phụ thuộc: cây -DoutputType = graphml'. Bằng cách đó, kết quả đầu ra có thể được thao tác trong một trình soạn thảo như yEd. – Raman

2

Bạn chưa mở pom qua Eclipse và nhìn vào các thư mục tab của tệp pom.xml có một mục nhập là "Dependency Graph"? Ah xin lỗi ... giám sát điều gì đó ... Bạn có thể tạo cây phụ thuộc thông qua phụ thuộc mvn: cây trên dòng lệnh, nhưng điều này không tạo ra chế độ xem đồ họa. Một giải pháp khác tốt hơn có thể là Maven Overview Plugin

9

Một tùy chọn khác là com.github.janssk1 maven dependency graph plugin. Plugin này xuất ra các phụ thuộc vào một tệp graphml có thể được mở và chỉnh sửa trong một trình soạn thảo như yEd.

Để tạo ra các tập tin graphml:

mvn com.github.janssk1:maven-dependencygraph-plugin:1.0:graph 

Plugin này hiện không cung cấp bất kỳ cơ chế để loại trừ phụ thuộc bên thứ 3, AFAICT, nhưng họ có thể bị xóa bằng tay từ biểu đồ sử dụng Yed hoặc thông qua một kiểu XSLT rằng sau xử lý các tệp graphml. Đây là một kiểu đơn giản mà sẽ xóa phụ thuộc bên thứ ba (bất kỳ phụ thuộc không bắt đầu với các gói được cung cấp bởi các tham số "nội bộ"):

<?xml version="1.0"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:gml="http://graphml.graphdrawing.org/xmlns/graphml" 
    version="2.0"> 

    <xsl:output method="xml"/> 
    <xsl:param name="internal"/> 

    <xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
    </xsl:template> 

    <xsl:template match="gml:node[not(starts-with(@id, $internal))]"/> 

    <xsl:template match="gml:edge[not(starts-with(@source, $internal)) or not(starts-with(@target, $internal))]"/> 

</xsl:stylesheet> 

Và thực hiện nó thông qua một bộ xử lý XSLT 2.0 tương thích như Saxon:

saxon input.graphml exclude-third-party-deps.xsl internal="my.package" > input-internal.graphml 
+1

Cảm ơn bạn đã cung cấp XSLT. Bạn có thể dễ dàng mở rộng để lọc nhiều tên gói, mã màu của bạn, vv, bất cứ điều gì. Rất hữu ích khi tái tạo biểu đồ của bạn trong chu kỳ dev. – sbk

+1

Tôi đã cố gắng sử dụng nhưng tôi nhận được: Không thực hiện được mục tiêu com.github.janssk1: maven-dependencygraph-plugin: 1 .2: đồ thị (mặc định-cli) trên dự án cag-parent: Không thể ghi vào tệp :. ... – aName

+0

@aName Tôi có cùng một vấn đề 'Không thực hiện được mục tiêu com.github.janssk1: maven-dependencygraph-plugin: 1.0: đồ thị (mặc định-cli) trên dự án email_templates: Không thể ghi vào tệp:/home/acme/acme/module/email_templates/target/email_templates-42.1.0-SNAPSHOT-deps.graphml (Không có tệp hoặc thư mục nào) ' –

5

Thanh toán dự án này quá: https://github.com/roclas/pomParser

Nó tạo ra một "đồ thị" khá mát mẻ mà có thể được điều hướng trong cả hai cách (tới lui). Ý tưởng rất đơn giản và bạn có thể tải xuống và thay đổi mã rất dễ dàng.

+0

Cảm ơn rất nhiều. Đó là một công cụ thực sự tốt đẹp. –

+0

Tôi nghĩ rằng đồ thị cũng sẽ là đồ họa nhưng nó có vẻ như kết quả "đồ thị" là kết cấu tinh khiết với các liên kết đến các phụ thuộc. – snap

3

Cài đặt Maven Graph Plugin: http://mvnplugins.fusesource.org/maven/1.10/maven-graph-plugin/index.html, định cấu hình theo cách này để ẩn phụ thuộc của bên thứ ba. Làm việc tốt.

<profile> 
    <id>graph</id> 
    <pluginRepositories> 
    <pluginRepository> 
     <id>mvnplugins.fusesource.org</id> 
     <url>http://mvnplugins.fusesource.org/repo/release</url> 
     <releases> 
     <enabled>true</enabled> 
     </releases> 
    </pluginRepository> 
    </pluginRepositories> 
    <build> 
    <plugins> 
     <plugin> 
     <groupId>org.fusesource.mvnplugins</groupId> 
     <artifactId>maven-graph-plugin</artifactId> 
     <version>1.10</version> 

     <configuration> 
      <hideExternal>true</hideExternal> 
     </configuration> 

     </plugin> 
    </plugins> 
    </build> 
</profile> 
6

có tồn tại một cách chính xác những gì bạn cần, nó được gọi là Pom Explorer.

Bạn có thể tìm thấy những trang web ở đây: github.com/ltearno/pom-explorer

Nó là một công cụ để làm việc trên một đồ thị của dự án maven. Như một lời trêu ghẹo tôi có thể nói rằng trên máy tính của tôi, nó phân tích 4000 tệp pom.xml trong 4 giây.Sau đó, nhiều functionnalities được cung cấp ở trên đồ thị pom phân tích:

  • phân tích phụ thuộc (người phụ thuộc vào GAV, mà gavs GAV này phụ thuộc vào, với transitivity), độ phân giải
  • (pom explorer biết thuộc tính mà được xác định, nó quản lý phụ thuộc và nhập khẩu bom),
  • thao tác (bạn có thể sử dụng nó để biến đổi biểu đồ pom, giả sử bạn muốn nhiều dự án sử dụng phiên bản phụ thuộc mới),
  • build (pom explorer analysis your pom graph) và biết thứ tự nên được xây dựng, sau đó nó xây dựng mọi thứ! thậm chí nó có thể xem các thư mục dự án của bạn để thay đổi),
  • xuất (ngày nay có CSV và GRAPHML xuất khẩu),
  • trực quan hóa (trình khám phá pom có ​​thể hiển thị cho bạn hình ảnh 3D có thể tùy chỉnh tương tác của biểu đồ dự án).

Hiện tại nó đang được phát triển tích cực, do đó bạn đừng ngại thử, báo cáo lỗi và yêu cầu các tính năng hữu ích! Tài liệu cũng chưa hoàn thành, vì vậy xin đừng ngần ngại hỏi!

Cảm ơn

+0

cảm ơn bạn vì thông tin này, tôi sẽ thử nó –

+0

Ưa thích nhưng không hoạt động. "LỚN LỚN RPC" –

0

Tôi cũng đã tạo công cụ cho việc này. Tôi đã dành cả ngày hack vào nó nên vẫn rất thử nghiệm =) Kiểm tra và đóng góp mã được hoan nghênh!

Tôi gọi nó là Maven Repository Dependency Visualizer. Nó không chỉ hiển thị phụ thuộc, nhưng tất cả các hiện vật có liên quan.

Với đầu vào này:

java -jar build/libs/maven-repository-dependency-visualizer-*-SNAPSHOT.jar \ 
-r http://repo1.maven.org/maven2 \ 
-fgs se.bjurr.violations \ 
-g se.bjurr.violations \ 
-a violation-comments-to-gitlab-gradle-plugin \ 
-v 1.9 
  • Một kho lưu trữ, như Nexus hoặc Artifactory.
  • Một hoặc nhiều nhóm để bao gồm.
  • Một nhóm, tạo phẩm và phiên bản.

Nó sẽ ra một biểu đồ hiển thị các mối quan hệ giữa các hiện vật đó:

  • Các vật được phụ thuộc vào.
  • Phụ thuộc vào hiện vật đã cho.
  • Tùy thuộc vào bất kỳ tạo tác nào mà phần tạo tác phụ thuộc vào.

enter image description here

Nó có thể được sử dụng để:

  • hiểu nhanh của phần mềm được phát triển bởi một tổ chức.
  • Xác định cách thiết kế đường ống phân phối.
  • Tìm phụ thuộc lạ giữa các hiện vật.
  • Và nhiều hơn nữa =)

Đây là available on GitHub.

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