Run Mojo: Mavenのwarプロジェクトをすばやく実行します。

warプロジェクトを開発するとき、通常はwarを構築して、インストールされたTomcatインスタンスにデプロイします。これは時間とリソースを消費し、またTomcatのローカルインスタンスを必要とします。

run Mojoは、Mavenビルドで埋め込まれたTomcatインスタンス内にwarを実行することで、それらの労力を回避する機会を提供します。

注意Maven3を使用してマルチモジュールMavenプロジェクトがある場合は、run goalを使用する前にすべてのモジュールをインストールする必要はありません。ルートモジュールからtomcat6/7:runを使用するだけで、プラグインがさまざまなモジュールからビルド出力ディレクトリを自動検出して、それらのディレクトリをwebappクラスローダーの依存関係に置き換えます。

埋め込みTomcatの実行

プラグインバージョンで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>

Mavenプロジェクト構造

  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を使用します。

selenium Mojoと一緒に使用します

この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>