モルモットの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内にを指定できるのだから、これで除外できればいいのに。test関連のライブラリなんか膨大だからそれを全部WEB-INF/libに入れられたら困る。
結局いろいろ調べてみたら、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>

タグはタグの外らしい。あと、ポイントは、
compile
これを記載しておいて、WEB-INF/libに入れたくないライブラリのをruntime、あるいはtestにしておくとOK。
これで、コマンドラインから、
mvn dependency:copy-dependencies
とすればコピーしてくれる。