MavenプロジェクトをTomcatで動かす方法

  • 64
    いいね
  • 0
    コメント
この記事は最終更新日から1年以上が経過しています。

経緯

「Webアプリ用のMavenプロジェクトをTomcatで動かしたいです!」と方法を聞かれたので、私が知っている方法をまとめておく。開発の上でのルールに合わせて、いずれか一つの方法でよい。

方法1 Apache Tomcat Maven Plugin を使う

設定

プロジェクトのpom.xmlのpluginsの部分にApache Tomcat Maven Pluginを追加。

pom.xml
<plugins>
  <!-- snip -->
  <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
      <path>/foo</path>
    </configuration>
  </plugin>
</plugins>

実行

mvnでTomcatを実行。

$ mvn tomcat7:run

http://localhost:8080/foo/ にブラウザでアクセスして、Webアプリが動作していることを確認。

なお、server.xmlを読ませたいときは、configuretion要素の中にserverXml要素を作成すれば良いようだ。

方法2 既存のTomcatとApache Tomcat Maven Pluginを連係させる

方法1ではMavenがダウンロードしたTomcatを動作させているが、いろいろな理由で、すでにインストール済みのTomcatを使いたい場合があるだろう。このような場合には、Apache Tomcat Maven Pluginを用いて既存のTomcatのmanagerを通じてプロジェクトをdeployさせる。

設定

以後は、すでにインストール済みのTomcatがlocalhost:8080で動作していることを前提とする。

まず、方法1のpom.xmlのconfiguration要素の中に、さらにserver要素、url要素を追加する。

pom.xml
<plugins>
  <!-- snip -->
  <plugin>
    <groupId>org.apache.tomcat.maven</groupId>
    <artifactId>tomcat7-maven-plugin</artifactId>
    <version>2.2</version>
    <configuration>
      <path>/foo</path>
      <server>tomcat-localhost</server>
      <url>http://localhost:8080/manager/text</url>
    </configuration>
  </plugin>
</plugins>

次に、managerをmvnから操作できるように、mavenのsettings.xmlとtomcatのtomcat-user.xmlを変更する。

~/.m2/settings.xml
<settings>
  <!-- snip -->
  <servers>
    <server>
      <id>tomcat-localhost</id>
      <username>foo</username>
      <password>bar</password>
    </server>
  </servers>
</settings>

必ず、 settings.xmlの<id>要素とpom.xmlの<server>要素の値を一致させておく こと。

$CATALINA_HOME/conf/tomcat-user.xml
<tomcat-users>
  <!-- snip -->
  <user username="foo" password="bar" roles="manager-script"/>
</tomcat-users>

すでにmanager-guiなどを使っている場合は、roles属性の値をカンマで区切って複数設定できる。

実行

Tomcatが起動している状態で、以下のコマンドを実行する。

$ mvn package tomcat7:deploy

http://localhost:8080/foo/ にブラウザでアクセスして、Webアプリが動作していることを確認。

なお、deployのし直しは tomcat7:redeploy、deployの停止は tomcat7:undeploy などで実行できる。

方法3 既存のTomcatのコンテキストファイルでビルド済みのフォルダを指定する

諸事情でApache Tomcat Maven Pluginを使えない/使わないときは、Tomcatのコンテキストファイルからprojectのtargetのビルド済みのフォルダを指定する。

他に比べてスマートじゃないけど、こういう環境もあるだろうということで。

設定

以後はプロジェクトのディレクトリが /Users/hoge/workspace/foo だと仮定する。
また、mvn packageした結果、ビルド済みのフォルダがプロジェクト内の target/foo-0.1-SNAPSHOT に作成されたと仮定する。

$CATALINA_HOME/conf/Catalina/localhost/ に、コンテキストファイルfoo.xmlを作成する1

$ vi CATALINA_HOME/conf/Catalina/localhost/foo.xml
foo.xml
<Context path="/foo" docBase="Users/hoge/workspace/foo/target/foo-0.1-SNAPSHOT" />

実行

Tomcatを実行した上で、http://localhost:8080/foo/ にブラウザでアクセスしてWebアプリが動作していることを確認する。

備考

バージョン番号の変更などにあわせてビルド済みのフォルダが代わる(コンテキストファイルを編集する)のが嫌な場合は、pom.xmlの<build>要素に<filename>要素を足しておく。

pom.xml
<build>
  <finalName>foo</finalName>
 <!-- snip -->
</build>

こうすると、ビルド済みのフォルダ(およびwarファイル名)が固定される。

方法4 Eclipseの場合

Eclipseの場合は、EclipseのWTPサーバにTomcatを追加して実行する方法と、往年のSysdeo Eclipse Tomcat Launcher plugin を利用する方法2がある。

後者は方法3とほとんど変わらない1ので、前者の方法。(誰かから要望があれば書くかも)

設定

  1. EclipseのServersウィンドウを開く
    (Window -> Show View -> Other... -> Server -> Servers)
  2. まだTomcatサーバを追加したことがなければ追加する
    (右クリック -> New -> Server)
  3. New Serverダイアログが表示されるので、Apacheフォルダから動作させたいTomcatのバージョンを選択して'Next'ボタンを押す
  4. 'Tomcat installation directory'でTomcatがインストールされたファイルパスを指定する。'JRE'も必要があれば設定し、'Next'ボタンを押す
  5. 動作させるMavenプロジェクトを'Add'して'Finish'ボタンを押す
  6. ServersウィンドウにTomcatサーバが追加されていることを確認する。動作させるアプリケーションの切り替えは、Tomcatサーバを右クリックして、Add and Remote...を選択すればよい

実行

ServersウィンドウのTomcatサーバを右クリックし、DebugもしくはStartをクリックする。Serversウィンドウ右上のアイコンをクリックしても同様。

備考

コンテキストルートなどは原則pom.xmlに従って設定されているが、確認したいときはプロジェクトのプロパティから確認できる。

参考

no more sysdeo tomcat launcher on eclipse juno


  1. EclipseのSysdeo Eclipse Tomcat Launcher pluginを使ってる場合は、「アプリケーションルートとするサブディレクトリー」の値に/target/foo-0.1-SNAPSHOTと入力してもよい
  2. 執筆時点でTomcat7まで対応。Tomcat8でもTomcat7として設定しておけば動くよ!的な記事も見かける。