S-JIS[2012-07-14] 変更履歴

Mavenアーキタイプ

Mavenのアーキタイプのメモ。


概要

Mavenでは、「アーキタイプ」を用いてプロジェクトを作成する。
いわばテンプレート・雛形のことか。


アーキタイプによるプロジェクト生成

archetype:generateにより、プロジェクトの雛形を生成できる。

D:\temp\pom> mvn archetype:generate

これを実行すると、雛形の選択肢が大量に出てくる(汗)

[INFO] Generating project in Interactive mode
[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
Choose archetype:
1: remote -> com.agilejava.docbkx:docbkx-quickstart-archetype (-)
2: remote -> com.alibaba.citrus.sample:archetype-webx-quickstart (-)
3: remote -> com.bsb.common.vaadin:com.bsb.common.vaadin.embed-simple-archetype (-)
4: remote -> com.bsb.common.vaadin:com.bsb.common.vaadin7.embed-simple-archetype (-)
〜
201: remote -> org.apache.maven.archetypes:maven-archetype-portlet (An archetype which contains a sample JSR-268 Portlet.)
202: remote -> org.apache.maven.archetypes:maven-archetype-profiles (-)
203: remote -> org.apache.maven.archetypes:maven-archetype-quickstart (An archetype which contains a sample Maven project.)
204: remote -> org.apache.maven.archetypes:maven-archetype-site (An archetype which contains a sample Maven site which demonstrates some of the supported document types like
〜
613: remote -> se.vgregion.javg.maven.archetypes:javg-minimal-archetype (-)
614: remote -> sk.seges.sesam:sesam-annotation-archetype (-)
Choose a number or apply filter (format: [groupId:]artifactId, case sensitive contains): 203:

どのアーキタイプを使用するか、番号を指定する。
今回はデフォルトが203(org.apache.maven.archetypes:maven-archetype-quickstart)になっているので、それを選んでみる。
(これはシンプルなJavaプロジェクトのアーキタイプらしい)

すると、次に、そのアーキタイプのバージョンの入力を求められる。

Choose version:
1: 1.0-alpha-1
2: 1.0-alpha-2
3: 1.0-alpha-3
4: 1.0-alpha-4
5: 1.0
6: 1.1
Choose a number: 6:

そして、作りたいプロジェクトの情報(グループID等)を入力する。

この際、スペースを入れると、そのスペースもデータとして含まれてしまうので注意。
例えばartifactIdにスペースを入れてから値を入れると、スペース入りのディレクトリーが作られてしまう!

Define value for property 'groupId': :
Define value for property 'artifactId': :
Define value for property 'version': 1.0-SNAPSHOT: :
Define value for property 'package': com.example: :
Confirm properties configuration:	入力した内容の再確認
groupId: com.example
artifactId: example1
version: 1.0-SNAPSHOT
package: com.example
Y: :
[INFO] ----------------------------------------------------------------------------
[INFO] Using following parameters for creating project from Old (1.x) Archetype: maven-archetype-quickstart:1.1
[INFO] ----------------------------------------------------------------------------
[INFO] Parameter: groupId, Value: com.example
[INFO] Parameter: packageName, Value: com.example
[INFO] Parameter: package, Value: com.example
[INFO] Parameter: artifactId, Value: example1
[INFO] Parameter: basedir, Value: D:\temp\pom
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] project created from Old (1.x) Archetype in dir: D:\temp\pom\example1
[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
定義名 内容
groupId グループ名。 com.example
artifactId アーティファクト名。
プロジェクトのディレクトリー名になる。
また、このプロジェクトをビルドして出来るファイルのファイル名にも使われる。
example1
version 今回作成するプロジェクトのバージョン。適当な文字列を付ける。
このプロジェクトをビルドして出来るファイルのファイル名の一部に使われる。
1.0-SNAPSHOT
package パッケージ名。デフォルトはgroupIdと同じ。
このプロジェクトで生成するJavaソースのpackageとなる。
com.example

この例だとexample1というディレクトリーが作られ、その下にpom.xmlとデフォルトのソースファイル等が作られる。

D:\temp\pom> tree /f example1

D:\TEMP\POM\EXAMPLE1
│  pom.xml
│
└─src
    ├─main
    │  └─java
    │      └─com
    │          └─example
    │                  App.java
    │
    └─test
        └─java
            └─com
                └─example
                        AppTest.java

今回使ったアーキタイプの場合、App.javaと、そのテスト用クラスであるAppTest.javaが作られる。
ディレクトリー構成はsrc/main/javaの下にJavaソース、src/test/javaの下にテストソースを置く。

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/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.example</groupId>
  <artifactId>example1</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>jar</packaging>

  <name>example1</name>
  <url>http://maven.apache.org</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
  </properties>

  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
</project>

選択肢の限定方法

最初の選択肢が多すぎるので、絞ることが出来る。

filterを指定すると、指定した文字列が含まれるものだけ抽出する。

mvn archetype:generate -Dfilter=org.apache.maven.archetypes:maven-archetype-quickstart
mvn archetype:generate -Dfilter=org.apache.maven.archetypes:
mvn archetype:generate -Dfilter=maven-archetype-quickstart

archetypeCatalogを指定すると、カタログファイル内に指定されているものだけ抽出する。

mvn archetype:generate -DarchetypeCatalog=http://asakusafw.s3.amazonaws.com/maven/archetype-catalog.xml

非対話形式によるプロジェクト生成

interactiveModeをfalseにすることで、対話形式でなく全自動で作ることも出来る。

定義名 内容
interactiveMode 対話形式でパラメーターを指定するかどうか。 -DinteractiveMode=false
archetypeGroupId
archetypeArtifactId
archetypeVersion
雛形となるアーキタイプの指定。  
groupId
artifactId
version
package
生成するプロジェクトの情報。  
packaging プロジェクトをビルドすることによって生成するファイルの種類。 -Dpackaging=jar
mvn archetype:generate -DinteractiveMode=false ^
-DarchetypeGroupId=org.apache.maven.archetypes ^
-DarchetypeArtifactId=maven-archetype-quickstart ^
-DarchetypeVersion=1.1 ^
-DgroupId=com.example ^
-DartifactId=example2 ^
-Dversion=1.0-SNAPSHOT ^
-Dpackage=com.example ^
-Dpackaging=jar

Eclipseの設定の生成

Mavenでは、Eclipseのプロジェクトの設定を生成することが出来る。

pom.xmlのあるディレクトリーで、「eclipse:eclipse」を実行する。

D:\temp\pom> cd example1
D:\temp\pom\example1> mvn eclipse:eclipse

これにより、Eclipseの「.project」「.classpath」ファイルが作られる。
そして、このexample1をEclipseからインポートすることが出来る。


Maven目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま