Oct 22, 2005

[Maven] Maven2 まとめ

Maven2 が正式リリースされたので、まとめ。

関連サイト

公式サイト
http://maven.apache.org/maven2/
デフォルトのリモートリポジトリ
http://repo1.maven.org/maven2
プラグイン一覧
http://maven.apache.org/maven2/plugins/index.html

インストール

  1. ここから Maven2 をダウンロードする
  2. アーカイブを適当な位置(ex. /opt/maven-2.0/)に解凍
  3. 環境変数 MAVEN_HOME を設定(ex. export MAVEN_HOME=/opt/maven-2.0)
  4. 環境変数 PATH を設定(ex. export PATH=$MAVEN_HOME/bin:$PATH)
  5. 起動確認 "mvn --version"
$ tar zxvf ./maven-2.0-bin.tar.gz
$ export MAVEN_HOME=/opt/maven-2.0
$ export PATH=$MAVEN_HOME/bin:$PATH
$ mvn --version
Maven version: 2.0

※公式なインストール方法(?)はこちら→Installation Instructions

プロジェクトの作成

  1. groupId, artifactId を考える
  2. archetype プラグインを実行(ex. mvn:create -DgroupId=in-vitro -DartifactId=sample)
  3. 生成されたプロジェクトを確認。カレントディレクトリ内に指定した artifactId と同名のプロジェクトディレクトリが生成されている。

archetype プラグイン実行時に指定可能なパラメータはこちら → archetype:create

※artifactId はプロジェクト成果物となるモジュール(?)のID。groupId は artifactId をグルーピングする際のID。

$ mvn archetype:create -DgroupId=in-vitro -DartifactId=sample
[INFO] Scanning for projects...
[INFO] Searching repository for plugin with prefix: 'archetype'.
[INFO] artifact org.apache.maven.plugins:maven-archetype-plugin: checking for up
dates from central
Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-archet
ype-plugin/1.0-alpha-3/maven-archetype-plugin-1.0-alpha-3.pom
1K downloaded
Downloading: http://repo1.maven.org/maven2/org/apache/maven/plugins/maven-archet
ype-plugin/1.0-alpha-3/maven-archetype-plugin-1.0-alpha-3.jar
6K downloaded
[INFO] -------------------------------------------------------------------------
---
[INFO] Building Maven Default Project
[INFO]    task-segment: [archetype:create] (aggregator-style)
[INFO] -------------------------------------------------------------------------
---
Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-archetype-core
/1.0-alpha-3/maven-archetype-core-1.0-alpha-3.pom
1K downloaded
Downloading: http://repo1.maven.org/maven2/org/apache/maven/maven-archetype/1.0-
alpha-3/maven-archetype-1.0-alpha-3.pom
661b downloaded

  ...snip...

[INFO] -------------------------------------------------------------------------
---
[INFO] Using following parameters for creating Archetype: maven-archetype-quicks
tart:RELEASE
[INFO] -------------------------------------------------------------------------
---
[INFO] Parameter: groupId, Value: in-vitro
[INFO] Parameter: outputDirectory, Value: C:\_workspace\sample
[INFO] Parameter: packageName, Value: in-vitro
[INFO] Parameter: package, Value: in-vitro
[INFO] Parameter: version, Value: 1.0-SNAPSHOT
[INFO] Parameter: artifactId, Value: sample
[INFO] ResourceManager : found archetype-resources/pom.xml with loader org.codeh
aus.plexus.velocity.ContextClassLoaderResourceLoader
[INFO] ********************* End of debug info from resources from generated POM
 ***********************
[INFO] ResourceManager : found archetype-resources/src/main/java/App.java with l
oader org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader
[INFO] ResourceManager : found archetype-resources/src/test/java/AppTest.java wi
th loader org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader
[INFO] Archetype created in dir: C:\_workspace\sample
[INFO] -------------------------------------------------------------------------
---
[INFO] BUILD SUCCESSFUL
[INFO] -------------------------------------------------------------------------
---
[INFO] Total time: 1 minute 35 seconds
[INFO] Finished at: Sat Oct 29 10:40:08 JST 2005
[INFO] Final Memory: 4M/7M
[INFO] -------------------------------------------------------------------------
---

$

pom.xml を眺めてみる

archetype プラグインが生成したプロジェクトディレクトリ(上の例では in-vitro )の直下に pom.xml ファイルが生成されている。 pom.xml はプロジェクトに関する各種設定を記述するファイルで Project Descriptor と呼ばれる。

pom.xml のフォーマットはこちら → Project Descriptor

<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>in-vitro</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>

プロジェクトをビルドしてみる

Maven2 ではビルドライフサイクルという概念が定義されている。 Maven2 実行時に規定されたビルドライフサイクルを指定することで、予め定義された順序でプラグインが逐次実行される。 ビルドライフサイクルには compile, package, install, deploy などが規定されている。

プロジェクトのビルドする場合、"mvn compile" といった様に Maven2 にビルドライフサイクルを指定する。

ビルドライフサイクルに関する詳細はこちら → Introduction to the Build Lifecycle

$mvn compile
[INFO] Scanning for projects...
[INFO] -------------------------------------------------------------------------
---
[INFO] Building Maven Quick Start Archetype
[INFO]    task-segment: [compile]
[INFO] -------------------------------------------------------------------------
---
[WARNING] POM for: 'commons-io:commons-io:pom:1.0' does not appear to be valid.
Its will be ignored for artifact resolution.

Reason: Failed to validate POM


[INFO] [resources:resources]
[INFO] Using default encoding to copy filtered resources.
[INFO] [compiler:compile]
Compiling 1 source file to /home/in-vitro/projects/sample/target/classes
[INFO] -------------------------------------------------------------------------
---
[ERROR] BUILD FAILURE
[INFO] -------------------------------------------------------------------------
---
[INFO] Compilation failure

/home/in-vitro/projects/sample/src/main/java/in-vitro/App.java:[1,10] ';' があり
ません。


[INFO] -------------------------------------------------------------------------
---
[INFO] For more information, run Maven with the -e switch
[INFO] -------------------------------------------------------------------------
---
[INFO] Total time: 2 seconds
[INFO] Finished at: Sat Oct 29 11:00:58 JST 2005
[INFO] Final Memory: 3M/5M
[INFO] -------------------------------------------------------------------------
---

$

Posted in Maven | このエントリーをはてなブックマークに追加 | この記事をクリップ! livedoor クリップ |