倭マン's BLOG

くだらない日々の日記書いてます。 たまにプログラミング関連の記事書いてます。 書いてます。

Archetype -- Maven2 プロジェクトの新規作成

Archetype プラグインMaven2 によって管理可能なプロジェクトのテンプレートを作成するプラグインです。 Maven2 を使う際に最も最初に(意識して)使うプラグインでしょう。

普通そんなに頻繁にプロジェクトを作成したりしないので、余り使い方を覚える必要はないかと思います。 「久しぶりにプロジェクトを新規作成する」ってときに便利な程度に使い方をまとめておきましょう*1

とりあえずプロジェクトを作ってみる


とりあえず、シンプルな Java プロジェクトを作ってみましょう。

♪作成前に♪

プロジェクトを作成する前に、まず「グループ ID (Group ID)」と「アーティファクト ID (Artifact ID)」を決めましょう。 「グループ ID」は開発グループの識別子であり、またデフォルトでは Java プログラムのパッケージ名になります。 一方、「アーティファクト ID」はプロジェクトの成果物に付けられる名前です。 以下では

  • グループ ID : org.sample
  • アーティファクト ID : sample

とします。

♪作成方法♪

「グループ ID」「アーティファクト ID」が決まったら、コマンド・プロンプトでプロジェクトを作成したいフォルダへ行き、以下のコマンドを実行しましょう:

mvn archetype:create -DgroupId=org.sample -DartifactId=sample

♪作成結果♪

上記のコマンドを実行すると、そのフォルダ下に「sample」フォルダが作成され、そのフォルダ下に POM ファイルや「src」フォルダなどが作成されます。

他に指定できるパラメータは?


上記のサンプルでは、プロジェクトの作成の際、groupId, artifactId, version の3つのパラメータを指定しました。 ここでは、それらと、それらの他に指定できるパラメータを幾つかピックアップして表にしておきます:

パラメータ名 指定対象 デフォルト値
groupId 開発グループの ID -
artifactId 成果物の ID -
version 成果物のバージョン 1.0-SNAPSHOT
packageName (ルート)パッケージ名 「groupId」の値
archetypeArtifactId プロジェクト・テンプレートの ID(種類) maven-archetype-quickstart


その他の指定可能なパラメータはこちらを参照。

パラメータの指定の仕方は、プロジェクトを作成する際「mvn archetype:create」に続けて

-Dパラメータ名=パラメータの値

を列挙します。

パッケージ名とグループ ID


パッケージ名は、特に指定しない限りグループ ID と同じになります。 ただし、1度作ったプロジェクト内でもパッケージ階層を1から作り直しても特に問題はありません。

もう少し具体的に。 上記のサンプルを実行して作ったプロジェクトでは「src/main/java」フォルダ下に Java パッケージ「org.sample」に対応する「org/sample」フォルダが作られています。 ここで、「org」フォルダ以下を削除して、「com/example」フォルダを作成し、その下にクラスを作成していっても特に問題は起こりません*2

まぁ、あまり関係のないフォルダ構造にしても混乱するだけですが、Maven2リポジトリを覗いてみると、グループ ID とパッケージ名が異なっているものが結構あります(というより、ほとんど異なっています)。 例えば、ロギング・コンポーネント「commons-logging」は、(ルート)パッケージ名が「org.apache.commons.logging」ですが、グループ ID は「commons-logging」となっています。

結局、グループ ID とは Maven2リポジトリ上で成果物を何処に配置するかを指定するものと思えばよいかと思います。 Java パッケージとは基本的に無関係です。

いろいろなプロジェクト・テンプレート -- Archetype Artifact ID


パラメータ「archetypeArtifactId」にいろいろな値を設定することによって、いろいろな種類のプロジェクト・テンプレートを作成することが出来ます:

それぞれのプロジェクトテンプレートの概要は次回以降に。

Apache Maven 2.0入門 Java・オープンソース・ビルドツール

Apache Maven 2.0入門 Java・オープンソース・ビルドツール


Ant 第2版

Ant 第2版

*1:ここでは create ゴールのみを扱います。

*2:もちろん、パッケージ名は com.example にしなければなりませんが。