Mavenによるプロジェクトのビルドのメモ。
|
Mavenのアーキタイプにより作られたプロジェクトでは、ビルド(パッケージング)することによって成果物(jarファイル等)が作られる。
packageにより、そのプロジェクトの成果物を生成する。
たぶん、pom.xmlのpackagingに指定されている種類のファイルが生成される。
(
「<packaging>jar</packaging>
」となっていれば、jarファイルが作られる)
D:\temp\pom\example1> mvn package 〜 [INFO] Building jar: D:\temp\pom\example1\target\example1-1.0-SNAPSHOT.jar [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ D:\temp\pom\example1> dir target 2012/07/14 22:58 <DIR> . 2012/07/14 22:58 <DIR> .. 2012/07/14 22:58 <DIR> classes 2012/07/14 22:58 2,154 example1-1.0-SNAPSHOT.jar 2012/07/14 22:58 <DIR> maven-archiver 2012/07/14 22:58 <DIR> surefire 2012/07/14 22:58 <DIR> surefire-reports 2012/07/14 22:58 <DIR> test-classes
ファイルを生成する際には、念の為にcleanも一緒に指定して、targetをクリアしてから実行するのが良い。
(targetの下にゴミが残っている可能性があるから、クリアする)
> mvn clean package
普通にpackageを実行すると、テストも実行される。
skipTestsをtrueにするとテストはスキップされる。
> mvn package -DskipTests=true
installにより、プロジェクトの成果物(jarファイルやソースファイル)をローカルリポジトリーへインストールできる。
mvn install mvn clean install
インストールする際にもcleanしてゴミを消した方がいいのは、パッケージングと同様。
インストール先(格納場所)はMavenのリポジトリー。(Windows7の場合は「C:\Users\ユーザー\.m2\repository
」)
なので、その下を確認してみると、ちゃんと存在している。
> dir /s c:\users\hishidama\.m2\repository\example1*.jar c:\users\hishidama\.m2\repository\com\example\example1\1.0-SNAPSHOT のディレクトリ 2012/07/14 23:23 2,154 example1-1.0-SNAPSHOT.jar 1 個のファイル 2,154 バイト
→pom.xmlを使用せずにローカルリポジトリーへインストールする方法
Mavenでは、依存するプロジェクト(dependency)をpom.xmlで指定することが出来る。
dependencyを
指定すると、ビルドする際に依存プロジェクトのjarファイルがクラスパスに追加される。
依存プロジェクトのjarファイルがローカルリポジトリー上に存在しない場合は、インターネット上のリモートリポジトリーから(ローカルリポジトリーへ)ダウンロードされる。
例えば、自分のプロジェクトをユーティリティーと本体に分けたとする。
ユーティリティープロジェクトをローカルリポジトリーに登録(インストール)しておけば、本体から参照(依存)することが出来る。
mvn archetype:generate -DinteractiveMode=false ^ -DarchetypeGroupId=org.apache.maven.archetypes ^ -DarchetypeArtifactId=maven-archetype-quickstart ^ -DarchetypeVersion=1.1 ^ -DgroupId=com.example ^ -DartifactId=example3-util ^ -Dversion=1.0-SNAPSHOT ^ -Dpackage=com.example ^ -Dpackaging=jar
package com.example.util; public class Util { public static String getMessage() { return "util"; } }
mvn clean install
mvn archetype:generate -DinteractiveMode=false ^ -DarchetypeGroupId=org.apache.maven.archetypes ^ -DarchetypeArtifactId=maven-archetype-quickstart ^ -DarchetypeVersion=1.1 ^ -DgroupId=com.example ^ -DartifactId=example3-main ^ -Dversion=1.0-SNAPSHOT ^ -Dpackage=com.example ^ -Dpackaging=jar
<dependency> <groupId>com.example</groupId> <artifactId>example3-util</artifactId> <version>1.0-SNAPSHOT</version> </dependency>
package com.example; import com.example.util.Util; public class App { public static void main(String[] args) { System.out.println(Util.getMessage()); } }
mvn clean package
.classpath
にユーティリティープロジェクトが加わる。mvn eclipse:eclipse
<classpath>
<classpathentry kind="src" path="src/test/java" output="target/test-classes" including="**/*.java"/>
<classpathentry kind="src" path="src/main/java" including="**/*.java"/>
<classpathentry kind="output" path="target/classes"/>
<classpathentry kind="var" path="M2_REPO/com/example/example3-util/1.0-SNAPSHOT/example3-util-1.0-SNAPSHOT.jar"/>
<classpathentry kind="var" path="M2_REPO/junit/junit/3.8.1/junit-3.8.1.jar"/>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>
</classpath>