Maven 入門 | その他 | Tomcat を起動して app を deploy する
Maven プロジェクトの Tomcat を Apache Tomcat Maven Plugin で起動する方法について説明する。
Goals
| Goal | 説明 |
|---|---|
| tomcat7:deploy | Deploy a WAR to Tomcat. |
| tomcat7:run | Runs the current project as a dynamic web application using an embedded Tomcat server. |
| tomcat7:help | Display help information on tomcat7-maven-plugin. Call mvn tomcat7:help -Ddetail=true -Dgoal=<goal-name> to display parameter details. |
設定
明示的な設定を指定しない場合、tomcat7 は次の設定を既定値として起動する。
- Tomcat manager URL of http://localhost:8080/manager
- Authentication details of username admin and no password
- Context path of /${project.artifactId}
<project>
...
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
</plugin>
...
</plugins>
</build>
...
</project>
finalName で artifact のファイル名を変更した場合は、次のように configuration の path を変更する必要がある。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/${project.build.finalName}</path>
</configuration>
</plugin>
使用方法
次の goal を実行すると、現在のプロジェクトを組み込み Tomcat で deploy できる。
$ mvn tomcat7:run
context url
context URL は artifactId と同じである。たとえば testApp であれば http://localhost:8080/testApp にアクセスして deploy された内容を確認できる。finalName で artifact を変更した場合、たとえば webApp.war にした場合は、http://localhost:8080/webApp のように finalName と同じ context でアクセスする。context を / にマッピングする場合は、下記の configuration を参照する。
Configuration
Tomcat が使用する HTTP port や AJPPort を変更できる。
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<path>/</path> <!-- default artifactId -->
<port>18080</port> <!-- default 8080 -->
<ajpPort>18009</ajpPort> <!-- default 8009 -->
<httpsPort>18443</httpsPort> <!-- default 8443 -->
<contextReloadable>true</contextReloadable>
<keystoreFile>${user.home}/.keystore</keystoreFile>
<keystorePass>changeit</keystorePass>
</configuration>
</plugin>
また、runtime に maven.tomcat.xxxx 形式の property で設定することもできる。設定可能な property は http://mojo.codehaus.org/tomcat-maven-plugin/run-war-only-mojo.html を参照する。
| property | 既定値 | 備考 |
|---|---|---|
| port | 8080 | |
| ajpPort | 8009 | |
| httpsPort | 8443 | |
| contextReloadable | true | |
| keystoreFile | なし | HTTPS 用証明書があるキーストア |
| keystorePass | なし | HTTPS 用秘密鍵があるキーストア |
| path | artifactId | Context path |
上記の設定を runtime に property として渡す。
$ mvn tomcat7:run -Dmaven.tomcat.port=18080 -Dmaven.tomcat.ajp.port=18009 -Dmaven.tomcat.httpsPort=18443 -Dmaven.tomcat.contextReloadable=true -Dmaven.tomcat.path="/"
必須ライブラリの読み込み
JDBC や JCE Provider など、TOMCAT_HOME/lib に入れる必要がある library を自動で読み込むには、次のように <plugin> element に <dependency> を記述する。
(http://stackoverflow.com/questions/9928829/tomcat7-maven-plugin-extradependency-seems-not-being-loaded)
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<!-- tomcat の lib フォルダに入れる必要がある library を記述する -->
<dependencies>
<dependency>
<groupId>postgresql</groupId>
<artifactId>postgresql</artifactId>
<version>8.4-701.jdbc4</version>
</dependency>
</dependencies>
</plugin>
参照
https://www.lesstif.com/pages/viewpage.action?pageId=14090451