Oct 22, 2005
Maven2 まとめ
Maven2 が正式リリースされたので、まとめ。
関連サイト
- 公式サイト
- http://maven.apache.org/maven2/
- デフォルトのリモートリポジトリ
- http://repo1.maven.org/maven2
- プラグイン一覧
- http://maven.apache.org/maven2/plugins/index.html
インストール
- ここから Maven2 をダウンロードする
- アーカイブを適当な位置(ex. /opt/maven-2.0/)に解凍
- 環境変数 MAVEN_HOME を設定(ex. export MAVEN_HOME=/opt/maven-2.0)
- 環境変数 PATH を設定(ex. export PATH=$MAVEN_HOME/bin:$PATH)
- 起動確認 "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
プロジェクトの作成
- groupId, artifactId を考える
- archetype プラグインを実行(ex. mvn:create -DgroupId=in-vitro -DartifactId=sample)
- 生成されたプロジェクトを確認。カレントディレクトリ内に指定した 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] ------------------------------------------------------------------------- --- $
TrackBack ping me at
http://www.in-vitro.jp/blog/index.cgi/Maven/20051022_01.trackback
writeback message: Ready to post a comment.
