このページでは、Fess のビルド方法、テスト方法、 配布パッケージの作成方法について説明します。
ビルドシステムの概要
Fess は Maven をビルドツールとして使用しています。 Maven は、依存関係の管理、コンパイル、テスト、パッケージングを自動化します。
pom.xml
Maven の設定ファイルです。プロジェクトのルートディレクトリに配置されています。
主な設定内容:
プロジェクト情報(groupId、artifactId、version)
依存ライブラリ
ビルドプラグイン
プロファイル
基本的なビルドコマンド
クリーンビルド
ビルド成果物を削除してから、再ビルドします:
パッケージの作成
WAR ファイルと配布用 zip パッケージを作成します:
成果物は target/ ディレクトリに生成されます:
フルビルド
クリーン、コンパイル、テスト、パッケージをすべて実行します:
依存関係のダウンロード
依存ライブラリをダウンロードします:
OpenSearch プラグインのダウンロード
OpenSearch と必須プラグインをダウンロードします:
注釈
このコマンドは、開発環境のセットアップ時や プラグインを更新する際に実行します。
テスト
Fess では、JUnit を使用してテストを実装しています。
単体テストの実行
すべての単体テストを実行
特定のテストクラスを実行
特定のテストメソッドを実行
複数のテストクラスを実行
テストのスキップ
テストをスキップしてビルドする場合:
警告
開発中はテストをスキップせず、必ず実行してください。 PR を作成する前には、すべてのテストが通ることを確認してください。
統合テストの実行
統合テストには integrationTests プロファイルを使用します。 実行するには、Fess サーバーと OpenSearch が起動している必要があります:
注釈
統合テストのクラス名は *Tests.java パターンです(単体テストは *Test.java)。
テストの書き方
単体テストの作成
テストクラスの配置
テストクラスは src/test/java/ 以下に配置します。 パッケージ構造は本体コードと同じにします。
テストクラスの基本構造
テストのライフサイクル
アサーション
JUnit 5 のアサーションを使用します:
テストカバレッジ
JaCoCo でテストカバレッジを測定します:
レポートは target/site/jacoco/index.html に生成されます。
コードフォーマット
Fess では、コードの品質を維持するために以下のツールを使用しています。
コードフォーマッター
コーディングスタイルを統一します:
ライセンスヘッダー
ソースファイルにライセンスヘッダーを追加します:
コミット前のチェック
コミット前に両方を実行してください:
配布パッケージの作成
zip パッケージの作成
配布用の zip パッケージを作成します:
生成される成果物:
RPM パッケージの作成
DEB パッケージの作成
プロファイル
Maven プロファイルを使用して、テストの種類を切り替えることができます。
build(デフォルト)
デフォルトのプロファイルです。単体テスト(*Test.java)を実行します:
integrationTests
統合テスト(*Tests.java)を実行するためのプロファイルです:
CI/CD
Fess では、GitHub Actions を使用して CI/CD を実行しています。
GitHub Actions
.github/workflows/ ディレクトリに設定ファイルがあります。
自動実行されるチェック:
ビルド
単体テスト
パッケージの作成
ローカルでの CI チェック
PR を作成する前に、ローカルで CI と同様のチェックを実行できます:
トラブルシューティング
ビルドエラー
エラー: 依存関係のダウンロード失敗
エラー: メモリ不足
エラー: Java バージョンが古い
Java 21 以降を使用してください:
テストエラー
テストがタイムアウトする
テストのタイムアウト時間を延長:
OpenSearch が起動しない
ポートを確認し、使用中の場合は変更します:
依存関係の問題
依存関係の競合
依存関係ツリーを確認:
特定の依存関係を除外:
ビルドのベストプラクティス
定期的なクリーンビルド
定期的にクリーンビルドを実行して、ビルドキャッシュの問題を回避します:
テストの実行
コミット前に必ずテストを実行します:
コードフォーマットの実行
PR を作成する前にコードフォーマットを実行します:
依存関係の更新
定期的に依存関係を更新します:
ビルドキャッシュの活用
ビルド時間を短縮するため、Maven のキャッシュを活用します:
Maven コマンドリファレンス
よく使うコマンド
次のステップ
ビルドとテストの方法を理解したら、以下のドキュメントを参照してください:
開発ワークフロー - 開発ワークフロー
コントリビューションガイド - コントリビューションガイドライン
アーキテクチャとコード構造 - コードベースの理解