2006.05.31 株式会社四次元データ 鈴木 圭
- 2.1. Maven のアーキテクチャ
- 2.2. Maven の実行
- 2.3. プロジェクトの作成
- 2.4. pom.xml について
- 2.5. コンパイル
- 2.6. ユニットテスト
- 2.7. ドキュメンテーション
- 2.8. JAR ファイルの作成
- 2.9. ローカルリポジトリへのインストール
- 2.10. リモートリポジトリへの配備
- 2.11. プロジェクトのクリーン
- 2.12. まとめ
2.3. プロジェクトの作成
Maven にはプロジェクトのスケルトン (雛形) を作成する機能があるので、新しくプロジェクトを作成するときは、その機能を利用するのが一般的です。
今回は最終的な成果物として JAR ファイルを作成するプロジェクトを作成します。また、プロジェクトの名前は「sample」とします。
プロジェクトを作成するには次のコマンドを実行します:
mvn archetype:create -DgroupId=com.example -DartifactId=sample
引数で指定している「archetype:create」はプロジェクトのスケルトンを作成するためのものです。 groupId にはプロジェクトのルートパッケージ名、artifactId にはプロジェクト名を指定します。
このコマンドの実行の裏では、プロジェクトのスケルトンを作成するプラグインによって処理が行われています。 また、mvn コマンドの「-Dkey=value」という形の引数は、システムプロパティを設定するためのものです。 このように、プラグインへのパラメータはシステムプロパティを介して渡すことができます。
プロジェクトの作成に成功すると、カレントディレクトリに sample というディレクトリが作成されていることが確認できます。
sample ディレクトリの内容を確認すると、以下のようになっていると思います:
sample │ pom.xml │ └─src ├─main │ └─java │ └─com │ └─example │ App.java │ └─test └─java └─com └─example AppTest.java
この中に pom.xml というファイルがあることを確認できると思います。 pom.xml はプロジェクトに関する情報を持つ重要なファイルです。
また、成果物の作成に必要なファイルは全て src ディレクトリ以下に配置します。 src ディレクトリ以下は次のような構成になっています:
src/main/java | Java ソースコード |
src/test/java | テスト用の Java ソースコード |
Maven では標準のディレクトリ構成が決められており、今作成したプロジェクトは標準のディレクトリ構成に従ったものとなっています。
標準のディレクトリ構成を決めることで、一度その構成を理解すれば、 Maven を利用した他のプロジェクトのディレクトリ構成も理解したことになるというメリットが生まれます。 そのため、標準のディレクトリ構成とは異なる構成をとることも可能ですが、 特に理由が無い限り、標準のディレクトリ構成に従うことが推奨されます。
2.4. pom.xml について
pom.xml はプロジェクトに関する情報を持つ重要なファイルです。 例えば、プロジェクトのビルドに関する情報や、依存するライブラリの情報、プラグインの設定などが含まれます。
以下にプロジェクト作成直後の pom.xml の内容を示します:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.example</groupId> <artifactId>sample</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>Maven Quick Start Archetype</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> </project>
project 要素以下の各要素が持つ意味は次の通りです:
modelVersion | POM のバージョン。 特に変更する必要はありません。 |
groupId | プロジェクトを一意に識別する名前。 プロジェクトのルートパッケージ名を指定するのが一般的です。 |
artifactId | プロジェクトの成果物の名前。 作成する JAR や WAR, EAR ファイルなどの名前に使用されます。 |
packaging | 作成する成果物のパッケージング・タイプ。 jar (デフォルト), war, ear などがあります。 |
version | プロジェクトのバージョン。 |
name | プロジェクトの表示名。 ドキュメントを作成するときなどに使用されます。 |
url | プロジェクトのサイトの URL。 ドキュメントを作成するときなどに使用されます。 |
dependencies | プロジェクトが依存するライブラリの情報。 |
先ほど、「pom.xml はプロジェクトに関する情報を持つ」と述べましたが、 pom.xml の内容を見ると、ソースコードの場所やクラスファイルの出力先など、重要であろう情報が記述されていません。 これは、pom.xml にはデフォルトの設定というものがあり、ここで記述されていないものは、デフォルトの値が適用されているためです。
今回は pom.xml を編集せずにそのまま使用しますが、実際の開発では、依存するライブラリの情報やプラグインの設定などを追加することになります(それらの方法については後述します)。