Code Atlas Gradle プラグインは、プロジェクトのコンパイル済み Java クラスを解析し、次の 2 つの形式でクラス図を生成します。
- PlantUML(
.puml) - Mermaid(
.mmd)
アーキテクチャや依存関係、継承・インタフェース実装を可視化したいときに便利です。
注意: 解析対象から、合成クラス、内部クラス、および匿名内部クラスは除外されます。
-
リポジトリの設定(
settings.gradle.ktsまたはsettings.gradle):Kotlin DSL (settings.gradle.kts)
pluginManagement { repositories { gradlePluginPortal() mavenCentral() } }Groovy DSL (settings.gradle)
pluginManagement { repositories { gradlePluginPortal() mavenCentral() } } -
プラグインを適用(
build.gradle.ktsまたはbuild.gradle):plugins { id("io.github.euledge.code-atlas") version "1.2.0" } -
拡張設定(任意):
Kotlin DSL (build.gradle.kts)
codeAtlas { formats.set(listOf("plantuml", "mermaid")) outputDir.set("docs/diagrams") rootPackages.set(listOf("com.example.domain", "com.example.infrastructure")) // 任意: パッケージプレフィックスでクラスをフィルタリング showDetails.set(true) // 任意: 公開フィールドとメソッドを図に含める stripPackagePrefix.set("com.example.") // 任意: クラス名から共通のパッケージプレフィックスを削除 groupByPackage.set(true) // 任意: パッケージごとにクラスをグループ化(namespace/package構文を使用) }Groovy DSL (build.gradle)
codeAtlas { formats = ['plantuml', 'mermaid'] outputDir = 'docs/diagrams' rootPackages = ['com.example.domain', 'com.example.infrastructure'] // 任意: パッケージプレフィックスでクラスをフィルタリング showDetails = true // 任意: 公開フィールドとメソッドを図に含める stripPackagePrefix = 'com.example.' // 任意: クラス名から共通のパッケージプレフィックスを削除 groupByPackage = true // 任意: パッケージごとにクラスをグループ化(namespace/package構文を使用) }formats– 生成したい図のフォーマット一覧。outputDir– 図ファイルを書き出すディレクトリ。rootPackages– 解析対象のクラスをフィルタリングするための任意のパッケージプレフィックス。このプレフィックスで始まるクラスのみが含まれます。DDDアーキテクチャの場合、listOf("com.example.domain", "com.example.infrastructure")のような値を設定します。showDetails–trueの場合、公開フィールドとメソッドを図に含めます。(デフォルト:false)stripPackagePrefix– 図をすっきりさせるためにクラス名から削除する共通のパッケージプレフィックス。(デフォルト:"")groupByPackage–trueの場合、パッケージごとにクラスをグループ化します。(デフォルト:false)
-
タスクを実行:
./gradlew generateDiagrams
タスクはプロジェクトをコンパイル(必要なら)し、クラスをスキャンして設定した出力ディレクトリに図を作成します。 詳細なオプションを確認するには、以下を実行してください:
./gradlew help --task generateDiagrams
Gradle プロジェクトプロパティ(-P または --project-prop)を使用して、拡張設定を上書きできます。
| プロパティ名 | 例 | 説明 |
|---|---|---|
formats |
plantuml,mermaid |
カンマ区切りのフォーマット一覧。 |
outputDir |
reports/diagrams |
出力ディレクトリパス。 |
rootPackages |
com.example.domain,com.example.infrastructure |
カンマ区切りのパッケージプレフィックス一覧。 |
showDetails |
true または false |
trueの場合、公開フィールドとメソッドを図に含めます。(デフォルト: false) |
stripPackagePrefix |
com.example. |
クラス名から削除するパッケージプレフィックス。 |
groupByPackage |
true または false |
パッケージごとにクラスをグループ化するかどうか。 |
注意: ドット(例: rootPackages=com.example)を含むプロパティを渡す場合、特に Windows 環境でのコマンドライン解析の問題を避けるために、--project-propの使用を推奨します。
すべてのパラメータの使用例:
./gradlew generateDiagrams \
--project-prop formats=plantuml,mermaid \
--project-prop outputDir=reports/diagrams \
--project-prop rootPackages=com.example.domain,com.example.infrastructure \
--project-prop showDetails=true \
--project-prop stripPackagePrefix=com.example. \
--project-prop groupByPackage=trueまたは、Windows では -P とダブルクォーテーションを使用する必要がある場合があります:
./gradlew generateDiagrams -P"formats=plantuml,mermaid" -P"outputDir=reports/diagrams" -P"rootPackages=com.example.domain,com.example.infrastructure" -P"showDetails=true" -P"stripPackagePrefix=com.example." -P"groupByPackage=true"sample-project ディレクトリに最小構成のサンプルがあります。プラグインをローカル Maven リポジトリに公開した後(./gradlew publishToMavenLocal)、以下を実行してください。
cd sample-project
../gradlew generateDiagrams生成された図は sample-project/docs/diagrams に配置されます。
classDiagram
namespace sample {
class B {
+void doSomething()
}
class A
class C
}
namespace dummy {
class D {
+String greet(String)
}
}
sample.A ..> sample.B
sample.A <|-- sample.C
sample.C ..> sample.B
sample.C ..> sample.A
- Java 21(または互換性のある JDK)
- Gradle 8.5 以上
- クラスパススキャンに ClassGraph を使用しています。
このプロジェクトには、AI エージェント(Cursor, Windsurf, Cline など)がこのプラグインを適切に扱えるようにするための Agent Skills 定義が含まれています。
- スキル定義ファイル:
agents/skills/code-atlas/SKILL.md