여러가지 / / 2023. 1. 31. 15:16

maven 모듈의 의존성을 그래프로 확인할 수 있는 depgraph-maven-plugin 소개

depgraph-maven-plugin은 다양한 포맷으로 의존성 그래프를 만드는 maven 플러그인이다. (DOT, GML, PlantUML, JSON, Text)

여기서는 .dot으로 실행할 예정이라서 Graphviz를 설치하자.

설치하는 방법은 아래 링크를 보고 OS에 맞게 설치하도록 하자.
http://www.graphviz.org/download/

Mac에 설치할 예정이라 brew를 통해 설치할 것이다.

$ brew install graphviz

설치를 하고 난 다음 모듈을 확인할 상위 pom.xml에 maven-plugin을 추가하자.

<build>
  <plugins>
    <plugin>
      <groupId>com.github.ferstl</groupId>
      <artifactId>depgraph-maven-plugin</artifactId>
      <version>4.0.2</version>
      <configuration>
        <createImage>true</createImage>
        <showGroupIds>true</showGroupIds>
        <showVersions>true</showVersions>
        <showDuplicates>true</showDuplicates>
        <showConflicts>true</showConflicts>
      </configuration>
    </plugin>
  </plugins>
</build>

createImage를 true로 해야 이미지 파일로 생성이 된다.

기본 dependency 구조는 아래와 같다.

- depgraph-tool (root)
- module1 (com.example:)
- module1-1
- module1-1-1
- module2

기본 의존성 그래프

기본 그래프는 depgraph:graph goal로 실행할 수 있다.

$ mvn depgraph:graph

[결과] module1-1-1에서 확인

groupId 의존성 그래프

의존성에서 groupId를 사용하여 의존성 그래프를 그린다.

$ mvn depgraph:by-groupid

[결과] module1-1-1에서 확인

Aggregated 그래프

depgraph:aggregatedepgraph:aggregate-by-groupid goal은 멀티 모듈 프로젝트 최상위에서 통합된 의존성 그래프를 만든다.

mvn depgraph:aggregate

[결과] root에서 확인

depgraph:aggregate-by-groupid는 모든 모듈에서 groupId와 의존성이 동일하게 실행된다.

mvn depgraph:aggregate-by-groupid

[결과] root에서 확인

특정 Artifacts 그래프

groupId, artifactId, version을 명시해야 한다.

mvn depgraph:for-artifact -DgroupId=com.example -DartifactId=module1-1-1 -Dversion=0.0.1-SNAPSHOT

[결과] root에서 확인

Reactor 그래프

depgraph:reactor는 멀티 모듈 프로젝트의 build 리액터를 만든다.

mvn depgraph:reactor

[결과] root에서 확인

스타일링

노드의 색깔 및 도형을 스타일링을 통해 변경할 수가 있다.

pom.xml에 configuration을 추가한다.

<configuration>
     ...
    <customStyleConfiguration>./configuration.json</customStyleConfiguration>
</configuration>

configuration.json 파일의 내용은 아래와 같다.
com.example로 시작하는 노드에 대한 스타일링이다.

{
  ...,

  "node-styles": {
    "com.example*": {
      "type" : "box",
      "style": "filled",
      "fill-color": "#ff0000"
    }
  }
}

또는 mvn 실행 시 경로를 지정할 수 있다.

mvn depgraph:reactor -DcustomStyleConfiguration=configuration.json

추가적인 스타일링 하는 방법은 아래 내용을 참고한다.

https://github.com/ferstl/depgraph-maven-plugin/wiki/Styling

참고자료)

반응형
  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유