【Spring Initializr 読解】ソースコードの読み始め の続編です。
Spring Initializr は start.spring.io と initializr の2つのリポジトリで構成されていましたが、その本体側の initializr のソースコードから読んでいきます。
採用技術スタック特有の資材
initializr に関わらず、同じ技術を使っていればどのプロジェクトにおいても置かれるような資材を先にまとめていきます。
この辺りは場数を踏めば特に認知負荷を高めるものではないですが、 OSS のコードを読む際についでで確認しておくと、色々知識の幅が広がって楽しいです。
(未使用)と記載しているのは、そういう機能もあるが initializr では使用していない、という意味です。
.github/
GitHub関連の設定ファイルを格納するディレクトリです。
- Issue のテンプレートやPull Request のテンプレート(未使用)
- GitHub Actionsのワークフロー定義(いわゆる、CI/CD のパイプライン処理)
- Dependabot を使って依存性があるライブラリのバージョンを検知
initializr の Artifact のデプロイや、GitHub に Release を作成したりしている。
実際に、世に公開するためのデプロイ処理は start.spring.io で行っているから、ここでは initializr というライブラリをリリースしているだけ、といった感じ。
.mvn/
Mavenのプロジェクト固有の設定を格納するディレクトリです。
- Maven Wrapperの設定(
wrapper/maven-wrapper.properties
) - プロジェクト固有のMaven設定やプロパティ(未使用)
一般的で、最小限の設定のみがある。
eclipse/
Eclipse IDE用の設定ファイルを格納するディレクトリです。
- Eclipse固有の設定ファイル(
org.eclipse.jdt.*.prefs
) - フォーマッター設定(
eclipse-code-formatter.xml
)
VSCode の場合は、/.vscode
に相当。ただ、IDE 関連の設定ファイルは Eclipse しか用意されていない模様。Spring Project で開発していた STS が当初 Eclipse のみサポートしていたのが背景にあったりするのかな。
git/
Gitのフック(hooks)スクリプトやGit関連の設定を格納するディレクトリです。
- pre-commit, post-commit などのGitフック
Ruby で書かれている Git フック見たの、初めてかも。
Git for Windows の git-bash は bash か perl しか入っていないから、まず、それ以外で書こうと思ったことがない。
src/
ソースコードを格納する主要なディレクトリです。
のはずですが、checkstyle 関連の設定ファイルしか存在していない模様。ソースコードはモジュールごとに分割されたディレクトリ配下の src
に入っている。
pom.xml
Mavenのプロジェクト設定ファイルです。
- プロジェクトの依存関係
- ビルド設定
- プラグイン設定
- プロジェクトのメタデータ
とりあえず、使用されている技術スタック確認したい場合は、まずこのファイルから、という印象。
このファイルの詳細は次回以降の記事で確認したい。
mvnw / mvnw.cmd
Maven Wrapperのスクリプトファイルです。
- mvnw: Unix系OS用のシェルスクリプト
- mvnw.cmd: Windows用のバッチファイル
Maven Wrapper のおかげで、mvn を各開発者がセットアップしなくてよい。
あと、mvnw.cmd
はバッチファイルでありながら、実際は処理の大半を PowerShell で書いているという黒魔術を使っている。いつか、解説記事を書きたい。
.cfignore
Cloud Foundryにデプロイする際、除外するファイルを指定する設定ファイルです。
- デプロイ時に不要なファイルやディレクトリを指定
- .gitignoreと同様の形式
どこで Cloud Foundry が使われているのか、まだよくわかっていない。
.gitattributes
Gitリポジトリ内のファイルの属性を定義する設定ファイルです。
- 改行コードの制御
- バイナリ/テキストファイルの区別
- diff/mergeの設定
.bat ファイルがないのに、.bat ファイルの設定しかされていない。謎の存在。
.gitignore
Gitの対象外とするファイルやディレクトリを指定する設定ファイルです。
- ビルド成果物
- IDE固有の設定ファイル
- ログファイル
- 一時ファイル
一般的な設定のみ。gitignore.io や gibo で生成したコードをそのままペッって貼ってはいなかった。
LICENSE.txt
プロジェクトのライセンス情報を記載したファイルです。
- オープンソースライセンスの詳細
- 使用条件や制限事項
Apache License 2.0 でした。
著作権と特許は Spring 側が持つ。コードの使用・改変・再配布は自由。ただし、ライセンス表示すること。
CODE_OF_CONDUCT.adoc
プロジェクトの行動規範を定義したファイルです。
一般的な内容が書かれていました。要するに、みんな仲良くして、それをする気のない人がいたら、プロジェクト側で追い出せる、ということ。
CONTRIBUTING.adoc
プロジェクトへの貢献方法を説明したファイルです。
- 開発プロセス
- コーディング規約
- Pull Request手順
- テスト要件
コントリビューションするにあたっての細かい点が説明されている。
README.adoc
プロジェクトの概要や使用方法を説明したファイルです。
- プロジェクトの説明
- セットアップ手順
- 基本的な使用方法
- 参考リンク
前回の記事で読んだ通り。