maven2

Introduction to the POM

遅ればせながらmaven2への移行を調査中。maven.xmlがなくなって、project.xmlがpom.xmlになって、速くなったっつうことでインストールしましたけど、しょっぱなwebアプリで試してみようと、Getting Startedとかみながらコマンドを打ちました。

mvn archetype:create -DgroupId=org.asyrinx -DartifactId=mvn-webapp -Dpackagename=org.asyrinx.mvn -DarchetypeArtifactId=maven-archetype-webapp

これで、カレントディレクトリの下に mvn-webapp というプロジェクトのディレクトリが作られます。でも、だーっと見てみると、javaのソースフォルダが作られてないじゃん!

http://pc8.2ch.net/test/read.cgi/tech/1131976988/l50
http://www.javaworld.com/javaworld/jw-12-2005/jw-1205-maven.html
とかによると、webアプリで使うjavaソースコードは、別のプロジェクトでjarを作ってそれをdependencyにいれろっていうことらしい。マジでー?めんどいっすー。
どうやら最初からソースフォルダ込みで作るのは無理みたいなので、仕方がないのでpom.xmlに書くことに。

  <build>
    <finalName>mvn-webapp</finalName>
  </build>

となっている部分を

  <build>
    <finalName>mvn-webapp</finalName>
    <sourceDirectory>src/main/java</sourceDirectory>
    <testSourceDirectory>src/test/java</testSourceDirectory>
  </build>

と変えればOK。


Eclipseの.classpathと.projectを変更してやるには、プロジェクトのディレクトリで

mvn eclipse:eclipse

とすればOK。ちなみに

mvn eclipse

だけだと、ちゃんとlifecycle phaseだかgoalだかを指定しなきゃいけないよと言われる。デフォルトのゴールってなくなっちゃったの?

Eclipse上では、M2_REPOというクラスパス変数を指定しておく必要があります。Windowsなら C:/Documents and Settings/<ユーザ名>/.m2/repository みたいです。


ついでによく使いそうなのも調べときましょう。http://www.javaworld.com/javaworld/jw-12-2005/jw-1205-maven.html の3ページ目 より

mvn test

で全部のテスト実行。一部だけ実行したい場合には、-D オプションでtestにそのテストの(FQNじゃなくて)クラス名を渡してあげればOKみたい。正規表現も使えます。

mvn test -Dtest=*MockTest


んで、warを作ってみる

mvn clean package

で、targetディレクトリに、warファイルができる。cleanがtargetディレクトリをきれいにするタスクで、packageがビルドを実行するみたいっすね。


次はデプロイ。tomcatには http://www.codeczar.com/products/maven-tomcat-plugin/scenarios.html というmaven1用のプラグインがあったんだけど、これ使えるのか?
http://docs.codehaus.org/display/MAVEN/Maven+Plugin+Matrix
によると、m2には一応対応しているらしいんだけど、plugin使うところまでまだ調べてないので、また今度。