モルモットのMavenプロジェクト化
モルモット議会答弁管理アプリのTeeda版を製作中。Teedaのバージョンが1.0.13-sp3から1.0.13-sp4にあがっていた。ライブラリを変更しようと思ったけど、バージョンアップに伴う変更はMavenが便利。
とりあえずTeeda習得がメインだったから、今までMavenプロジェクト化はほったらかしにしてきたけど、少し落ち着いているので、ここらでこのモルモットをMavenプロジェクトに変更する作業を先にすることにした。
もともとMavenは好きで、いくつかのプロジェクトで使用したことはある。開発だけならEclipse+CVS/Subversionで十分なのだけど、ビルドサーバを立てて、継続的にテストを行うチーム開発では威力を発揮する。レポート作成までのほとんどが完全自動でできてしまう。といってもそのときはMaven1。
今回は、Maven2。もともとDoltengが自動で作ってくれたファイル群の中にpom.xmlが入っているので、このpom.xmlをベースにして、m2eclipseプラグインとTomcat Launcherプラグインとの整合性をどう取るかが問題。いちいちwar化してデプロイなんかしていたらせっかくのサクサク感がなくなってしまう。
以前Maven1でプロジェクト管理をしていたときもTomcat Launcherプラグインとの整合性をどう取るかで苦労した。一通りの経験があるので、あとは、Maven2でどうそれを実現するかだけを考えた。一番の問題は、Mavenで管理しているライブラリをどうやってWEB-INF/lib内のライブラリと同期をとるか。Maven2Additionalプラグインがあるが、これは除外するライブラリをいちいち記載しないといけない。せっかくpom.xmlの
結局いろいろ調べてみたら、Maven Dependency Pluginでなんとかなるようになった。ここのページに具体例が載っているが、これではうまくいかなかった。この記載には間違いがあるみたい。正しくは、
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-dependency-plugin</artifactId> <executions> <execution> <id>copy-dependencies</id> <phase>compile</phase> <goals> <goal>copy-dependencies</goal> </goals> </execution> </executions> <configuration> <includeScope>compile</includeScope> <outputDirectory>src/main/webapp/WEB-INF/lib</outputDirectory> <overWriteReleases>false</overWriteReleases> <overWriteSnapshots>false</overWriteSnapshots> <overWriteIfNewer>true</overWriteIfNewer> </configuration> </plugin>
これを記載しておいて、WEB-INF/libに入れたくないライブラリの
これで、コマンドラインから、
mvn dependency:copy-dependencies
とすればコピーしてくれる。