warプロジェクトを開発するとき、通常はwarを構築して、インストールされたTomcatインスタンスにデプロイします。これは時間とリソースを消費し、またTomcatのローカルインスタンスを必要とします。
run Mojoは、Mavenビルドで埋め込まれたTomcatインスタンス内にwarを実行することで、それらの労力を回避する機会を提供します。
注意Maven3を使用してマルチモジュールMavenプロジェクトがある場合は、run goalを使用する前にすべてのモジュールをインストールする必要はありません。ルートモジュールからtomcat6/7:runを使用するだけで、プラグインがさまざまなモジュールからビルド出力ディレクトリを自動検出して、それらのディレクトリをwebappクラスローダーの依存関係に置き換えます。
プラグインバージョンでpomを設定します(他のMojoパラメータについては、各Mojoのドキュメントを参照してください)。
そして、次を使用します:mvn tomcat6/7:run
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<!-- or if you want to use tomcat 6.x
<artifactId>tomcat6-maven-plugin</artifactId>
-->
<version>2.2</version>
<configuration>
<!-- http port -->
<port>9090</port>
<!-- application path always starts with /-->
<path>/</path>
<!-- optional path to a context file -->
<contextFile>${tomcatContextXml}</contextFile>
<!-- optional system propoerties you want to add -->
<systemProperties>
<appserver.base>${project.build.directory}/appserver-base</appserver.base>
<appserver.home>${project.build.directory}/appserver-home</appserver.home>
<derby.system.home>${project.build.directory}/appserver-base/logs</derby.system.home>
<java.io.tmpdir>${project.build.directory}</java.io.tmpdir>
</systemProperties>
<!-- if you want to use test dependencies rather than only runtime -->
<useTestClasspath>false</useTestClasspath>
<!-- optional if you want to add some extra directories into the classloader -->
<additionalClasspathDirs>
<additionalClasspathDir></additionalClasspathDir>
</additionalClasspathDirs>
</configuration>
<!-- For any extra dependencies needed when running embedded Tomcat (not WAR dependencies) add them below -->
<dependencies>
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>\${derbyVersion}</version>
</dependency>
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
</plugin>
pom.xml (top level pom with packaging pom) my-api/pom.xml (API project with packaging jar) my-api-impl/pom.xml (API implementation project with packaging jar) my-webapp/pom.xml (webapp project with packaging war)
上記の構造では、最上位ディレクトリからmvn tomcat6/7:run -pl :my-webapp -amを使用します。
このMojoを使用して、Tomcatインスタンスでアプリケーションを起動し、このインスタンスに対してseleniumテストを実行できます。
次の構成は、プレインテグレーションテストで埋め込みTomcatを起動し、インテグレーションテスト後に停止します。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<!-- or if you want to use tomcat 6.x
<artifactId>tomcat6-maven-plugin</artifactId>
-->
<version>2.2</version>
<executions>
<execution>
<id>tomcat-run</id>
<goals>
<goal>run-war-only</goal>
</goals>
<phase>pre-integration-test</phase>
<configuration>
....
<fork>true</fork>
....
</configuration>
</execution>
<execution>
<id>tomcat-shutdown</id>
<goals>
<goal>shutdown</goal>
</goals>
<phase>post-integration-test</phase>
</execution>
</executions>
</plugin>