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使うところまでまだ調べてないので、また今度。