EclipseでMaven2とTomcatプラグイン
EclipseでMaven2(m2eclipse)とTomcatプラグインを上手に使う方法はないかなーと思って、s2struts-blankで試行錯誤。
結局、mnv packageを実行したときにtaget/s2struts-blank/WEB-INFみたいな感じでtargetの下にwarに固める前の構成がそのままできるので、それぞれのソースの出力先を無理やりそこに合わせることにしてみた。
でディレクトリ構成は下のような感じにして
s2struts-blank ├─src │ └─main │ ├─java ← output s2struts-blank/target/s2struts-blank/WEB-INF/classes │ ├─resources ← output s2struts-blank/target/s2struts-blank/WEB-INF/classes │ └─webapp ← output s2struts-blank/target/s2struts-blank │ └─WEB-INF │ ├─classes │ └─lib └─target ├─classes └─s2struts-blank ├─META-INF └─WEB-INF ├─classes └─lib
pom.xml build finalNameを指定してwarを作るときにバージョンが入らないようにしてみた
<?xml version="1.0" encoding="UTF-8"?><project> <modelVersion>4.0.0</modelVersion> <groupId>org.seasar.struts</groupId> <artifactId>s2struts-blank</artifactId> <packaging>war</packaging> <version>0.0.1</version> <description></description> <build> <finalName>s2struts-blank</finalName> </build> <repositories> <repository> <id>maven.seasar.org</id> <name>The Seasar Foundation Maven2 Repository</name> <url>http://maven.seasar.org/maven2</url> </repository> </repositories> <dependencies> <dependency> <groupId>org.seasar.struts</groupId> <artifactId>s2-struts</artifactId> <version>1.2.5</version> <type>jar</type> </dependency> <dependency> <groupId>org.seasar.dao</groupId> <artifactId>s2-dao</artifactId> <version>1.0.35</version> <type>jar</type> </dependency> </dependencies> </project>
.classpath m2eclipseの恩恵を受けてこんなにシンプルに
<classpath> <classpathentry output="target/s2struts-blank" kind="src" path="src/main/webapp"/> <classpathentry kind="src" path="src/main/java"/> <classpathentry kind="src" path="src/main/resources"/> <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> <classpathentry kind="var" path="TOMCAT_HOME/common/lib/servlet-api.jar"/> <classpathentry kind="var" path="TOMCAT_HOME/common/lib/jasper-runtime.jar"/> <classpathentry kind="var" path="TOMCAT_HOME/common/lib/jsp-api.jar"/> <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER"/> <classpathentry kind="output" path="target/s2struts-blank/WEB-INF/classes"/> </classpath>
.tomcatplugin rootDirを/target/s2struts-blankにしているところがポイント
<?xml version="1.0" encoding="UTF-8"?> <tomcatProjectProperties> <rootDir>/target/s2struts-blank</rootDir> <exportSource>false</exportSource> <reloadable>false</reloadable> <redirectLogger>false</redirectLogger> <updateXml>true</updateXml> <warLocation></warLocation> <extraInfo></extraInfo> <webPath>/s2struts-blank</webPath> </tomcatProjectProperties>
とそれぞれのファイルは上にように設定されている。
mvn package
を実行したら、
s2struts-blank/target/s2struts-blank/WEB-INF/libの下に必要なjarが配置されるので
一応Maven2の恩恵にもあずかれているはず。
あとこの構成ならHOTdeployも問題なしのはず。。。
ただ、ソース出力先が入れ子になってるところがちょっとあやしいのと、projectをcleanしたらjarが削除されてしまうので、その都度、mvn packageをしないといけない。。。
というかtomcat-maven-pluginを使えばもっと便利になるのかも。。。ちょっと調べてみようかな。。。っというか誰かもっと良い方法をすでに提供してくれてるかも。。。そっちのほうを先に調べてみようかな。