第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 ディレクトリーレイアウト

ProjectDir/
    pom.xml
    src/
        main/
            java/
                ...
            resources/
                META-INF/

                OSGI-INF/
                    blueprint/
                        *.xml
        test/
            java/
            resources/
    target/
        ...
注記

標準のディレクトリーのレイアウトを上書きすることは可能ですが、Maven では推奨され ません

18.1.3. pom.xml ファイル

pom.xml ファイルは現在のプロジェクトのプロジェクトオブジェクトモデル (POM) です。これには、現在のプロジェクトのビルド方法に関する完全な説明が含まれています。pom.xml ファイルは完全に自己完結型にすることができますが、これは頻繁に (特に複雑な Maven プロジェクトの場合) 親 POM ファイルから設定をインポートできます。

プロジェクトをビルドすると、生成された JAR ファイルの以下の場所に 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 サービス を参照してください。

Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.