第18章 Maven でのビルド
概要
Maven は、Apache Maven プロジェクトで利用できるオープンソースのビルドシステムです。この章では、基本的な Maven の概念の一部と、Red Hat Fuse と連携するように Maven を設定する方法を説明します。原則では、どのビルドシステムでも OSGi バンドルをビルドできます。ただし、Red Hat Fuse による十分なサポートがあるため、Maven の使用を強く推奨しています。
18.1. Maven ディレクトリー構造 リンクのコピーリンクがクリップボードにコピーされました!
18.1.1. 概要 リンクのコピーリンクがクリップボードにコピーされました!
Maven ビルドシステムの最も重要な原則の 1 つは、Maven プロジェクト内のすべてのファイルに 標準的な場所 があることです。この原則には、いくつかの利点があります。利点の 1 つは、Maven プロジェクトに同一のディレクトリーレイアウトがあり、プロジェクトのファイルを簡単に見つけられることです。もう 1 つの利点は、Maven と統合されている各種ツールでは初期設定をほとんど必要とし ない ことです。たとえば、Java コンパイラーは、src/main/java
下のソースファイルをすべてコンパイルし、結果を target/classes
に配置する必要があることを認識しています。
18.1.2. 標準のディレクトリーレイアウト リンクのコピーリンクがクリップボードにコピーされました!
例18.1「標準の Maven ディレクトリーレイアウト」 は、OSGi バンドルプロジェクトのビルドに関連する標準の Maven ディレクトリーレイアウトの要素を示しています。さらに、Blueprint 設定ファイル (Maven によって定義されて いない) の標準の場所も紹介しています。
例18.1 標準の Maven ディレクトリーレイアウト
標準のディレクトリーのレイアウトを上書きすることは可能ですが、Maven では推奨され ません。
18.1.3. pom.xml ファイル リンクのコピーリンクがクリップボードにコピーされました!
pom.xml
ファイルは現在のプロジェクトのプロジェクトオブジェクトモデル (POM) です。これには、現在のプロジェクトのビルド方法に関する完全な説明が含まれています。pom.xml
ファイルは完全に自己完結型にすることができますが、これは頻繁に (特に複雑な Maven プロジェクトの場合) 親 POM ファイルから設定をインポートできます。
プロジェクトをビルドすると、生成された JAR ファイルの以下の場所に pom.xml
ファイルのコピーが自動的に組み込まれます。
META-INF/maven/groupId/artifactId/pom.xml
META-INF/maven/groupId/artifactId/pom.xml
18.1.4. src とターゲットディレクトリー リンクのコピーリンクがクリップボードにコピーされました!
src/
ディレクトリーには、プロジェクトの開発中に作業するすべてのコードおよびリソースファイルが含まれます。
target/
ディレクトリーには、ビルドの結果 (通常は JAR ファイル) と、ビルド中に生成されたすべての中間ファイルが含まれます。たとえば、ビルドの実行後、target/classes/
ディレクトリーにはリソースファイルのコピーとコンパイルした Java クラスが含まれます。
18.1.5. メインおよびテストディレクトリー リンクのコピーリンクがクリップボードにコピーされました!
src/main/
ディレクトリーには、アーティファクトのビルドに必要なすべてのコードおよびリソースが含まれます。
src/test/
ディレクトリーには、コンパイルされたアーティファクトに対して単体テストを実行するためのすべてのコードおよびリソースが含まれます。
18.1.6. Java ディレクトリー リンクのコピーリンクがクリップボードにコピーされました!
各 java/
サブディレクトリーには、標準の Java ディレクトリーレイアウト (ディレクトリーパス名が .
の代わりに /
で Java パッケージ名をミラーリングする) を持つ Java ソースコード (*.java
ファイル) が含まれます。src/main/java/
ディレクトリーにはバンドルソースコードが含まれ、src/test/java/
ディレクトリーには単体テストのソースコードが含まれます。
18.1.7. resources ディレクトリー リンクのコピーリンクがクリップボードにコピーされました!
バンドルに含める設定ファイル、データファイル、または Java プロパティーがある場合は、これらを src/main/resources/
ディレクトリー下に配置する必要があります。src/main/resources/
下のファイルおよびディレクトリーは、Maven ビルドプロセスによって生成される JAR ファイルのルートにコピーされます。
src/test/resources/
下のファイルは、テストフェーズ中にのみ使用され、生成された JAR ファイルに コピーされません。
18.1.8. Blueprint コンテナー リンクのコピーリンクがクリップボードにコピーされました!
OSGi R4.2 は、Blueprint コンテナーを定義します。Red Hat Fuse には Blueprint コンテナーのサポートが組み込まれています。これは、プロジェクト内に OSGI-INF/blueprint/*.xml
という Blueprint 設定ファイルを含むだけで有効にできます。Blueprint コンテナーの詳細は、12章OSGi サービス を参照してください。