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:aggregate
와 depgraph: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
참고자료)