【Spring Initializr 読解】採用技術スタック特有の資材 の続編です。
この記事では、 initializr 特有の資材について確認していきます。
各モジュールについて
README と pom.xml
を参考に、各モジュールの概要を整理します。また、なるべく他のモジュールから依存されている順で記載していきます。
Java の実装を持たない POM(= 親 POM)
まずは、親 POM から各モジュールの役割を見ていきます。
initializr
プロジェクト直下に配置されている pom.xml
のプロジェクトです。
子 POMが11個定義されています。子POMごとにディレクトリが作成され、それがプロジェクト直下に配置されている構成になっています。
この親 POM 内では、Maven の基本的なプラグインやフォーマットに関するライブラリの依存性のみが定義されています。
initializr-bom
唯一、プロジェクト直下の pom.xml
を直接継承しているモジュールです。
Spring Initializr プロジェクト全体での依存関係バージョンの一元管理をしています。
また、Maven のプラグインで以下の設定をしています。
flatten-maven-plugin
必要最小限の情報を含むPOMを生成。
また、${revision}
に具体的なバージョン名を付与する。
xml-maven-plugin
上記のプラグインで生成したPOMを整形する。
initializr-parent
唯一、initializr-bom を直接継承しているモジュールです。
以下の項目において、 initializr 全体のプロジェクト設定の共通化をしています。
依存関係バージョンの一元管理
Spring Boot Dependencies, Apache Commons(compress, text), Maven関連ライブラリ, など。
プラグイン設定の共通化
maven-source-plugin や maven-compile-plugin などの一般的な Maven プラグインの設定。
また、full
プロファイルにて、javadoc を生成する設定も追加しています。
Java の実装を持つモジュール
これ以降のモジュールは実際に Java のソースコードを含みます。
initializr-version-resolver
こちらは initializr が適切なライブラリバージョンを選択・解決する機能を提供するモジュールです。
既存の Maven で使用されている依存解決方法はスレッドセーフではないことでローカルリポジトリが壊れてしまう問題が起こるそうで、その問題を回避するためのモジュールみたいです。
Spring のプロジェクトというよりも、Utility 系のプロジェクトといった印象。
initializr-generator
テンプレートベースのコード生成と、Spring フレームワークを使用したプロジェクト生成の機能を提供している initializr の中核的なモジュールです。
initializr-metadata
プロジェクト生成に必要なメタデータの定義に関する機能を提供しています。
依存性に initializr-generator
を持っています。
initializr-generator-spring
基本の initializr-generator
を拡張して、Spring プロジェクトに特化した機能を提供するモジュールです。
initializr-generator
と initializr-metadata
を依存性として持っています。
また、テストスコープとして initializr-generator-test
を使っています。
initializr-generator-test
プロジェクト生成機能のテストを支援するユーティリティを提供しています。
また、テスト基盤としての役割を果たすため、主要なテストライブラリが実行時依存関係(compile scope)として含まれています。
initializr-generator
と initializr-metadata
を依存性として持っています。
initializr-web
このモジュールが Spring Initializr の Web フロントエンドとして機能し、ユーザーインターフェースとAPIを提供しています。
具体的には以下のような機能です。
- REST API の実装
- プロジェクトのダウンロード機能
- プロジェクト生成のためのフォームハンドリング
- 各種メタデータの提供
initializr-generator
と initializr-metadata
を依存性として持ち、
テストスコープとして、initializr-generator-spring
、initializr-generator-test
を持ちます。
initializr-actuator
Spring Boot Actuator を使用して、Spring Initializr の運用監視機能を提供しています。
具体的には、システムの健康状態、メトリクス、使用統計などの監視機能を提供しているようです。
依存性として今まで上記で紹介してきたライブラリを持ちます。
initializr-docs
JavaDoc を生成するための機能を提供しています。
生成したドキュメントは以下で公開されているようです。
依存性として今まで上記で紹介してきたライブラリを持ちます。
initializr-service-sample
Spring Initializr を実際にサービスとして実装する際のサンプル(参照実装)を提供しています。
ソースコードで処理の始まりから追っていきたい場合、ここを起点にするのがよさそう。