0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【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-generatorinitializr-metadata を依存性として持っています。
また、テストスコープとして initializr-generator-test を使っています。

initializr-generator-test

プロジェクト生成機能のテストを支援するユーティリティを提供しています。
また、テスト基盤としての役割を果たすため、主要なテストライブラリが実行時依存関係(compile scope)として含まれています。

initializr-generatorinitializr-metadata を依存性として持っています。

initializr-web

このモジュールが Spring Initializr の Web フロントエンドとして機能し、ユーザーインターフェースとAPIを提供しています。
具体的には以下のような機能です。

  • REST API の実装
  • プロジェクトのダウンロード機能
  • プロジェクト生成のためのフォームハンドリング
  • 各種メタデータの提供

initializr-generatorinitializr-metadata を依存性として持ち、
テストスコープとして、initializr-generator-springinitializr-generator-test を持ちます。

initializr-actuator

Spring Boot Actuator を使用して、Spring Initializr の運用監視機能を提供しています。
具体的には、システムの健康状態、メトリクス、使用統計などの監視機能を提供しているようです。

依存性として今まで上記で紹介してきたライブラリを持ちます。

initializr-docs

JavaDoc を生成するための機能を提供しています。
生成したドキュメントは以下で公開されているようです。

仕様書
Javadoc

依存性として今まで上記で紹介してきたライブラリを持ちます。

initializr-service-sample

Spring Initializr を実際にサービスとして実装する際のサンプル(参照実装)を提供しています。
ソースコードで処理の始まりから追っていきたい場合、ここを起点にするのがよさそう。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?