試験工程に入ると頻繁にwarを作り直したりしたときに、別サーバにあるTomcatにデプロイし直す必要がありますが、手動でやるのはめんどくさい。
Tomcat Maven Pluginを使えばMavenからデプロイできるので、実際に試してみた。
環境
試したときの環境は以下のとおり。
MW/OS | Version |
---|---|
Java | 11 |
Tomcat | 9 |
CentOS | 7.7 |
Tomcatにデプロイするためのユーザを設定
$CATALINA_HOME/conf/tomcat-users.xmlを編集しmanager-scriptというロールをもつユーザを追加する。
<tomcat-users xmlns="http://tomcat.apache.org/xml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://tomcat.apache.org/xml tomcat-users.xsd" version="1.0"> <role rolename="manager-gui" /> <role rolename="manager-script" /> <user username="admin" password="12345678" roles="manager-script" /> </tomcat-users>
manager-scriptはすでに用意されているロールでその他にもいくつか用意されているロールが存在する。
そのほかのロールはTomcatのマニュアルを参照してください。
setting.xmlに追加したユーザ情報を設定
setting.xmlにTomcatに設定したユーザのログイン認証情報を設定する。
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 https://maven.apache.org/xsd/settings-1.0.0.xsd"> <servers> <server> <id>TomcatServer</id> <username>admin</username> <password>12345678</password> </server> </servers> </settings>
Mavenにpluginの情報を設定する
pom.xmlにtomcat7-maven-pluginを設定する。 試したTomcatのversionは9だったが、問題なく動作した。 tomcat7-maven-pluginのマニュアルにはversionは2.3-SNAPSHOTと書かれているが、Maven Central Repositoryには2.2までしか存在しないので注意。
<plugin> <groupId>org.apache.tomcat.maven</groupId> <artifactId>tomcat7-maven-plugin</artifactId> <version>2.2</version> <configuration> <url>http://192.168.0.26:8080/manager/text</url> <server>TomcatServer</server> <path>/${project.artifactId}</path> <update>true</update> </configuration> </plugin>
各タグに関する補足情報
タグ | 補足情報 |
---|---|
url | local環境にデプロイする場合は省略で良い。ローカル環境ではない場合は指定が必要(http:// |
server | setting.xmlで設定したTomcatの認証情報を指定 |
path | コンテキストパスを指定する |
update | すでにデプロイされている場合にアンデプロイするかどうかの設定。trueにしておくとredeployをゴールに指定する必要はなくなるのでtrueにしておくと良い。 |
Tomcatにデプロイする
Goalsに「tomcat7:deploy」を指定して実行するとデプロイが行われる。
[INFO] tomcatManager status code:200, ReasonPhrase: [INFO] OK - コンテキストパス [/SampleDeployTomcatForMvn] でアプリケーションを配備しました
感想
Mavenからデプロイすることで、手動によるファイルの転送をする時間が省けるので少しは効率的に作業ができると思う。 サーバを跨ってのデプロイのやり方までは調べていないので実際の業務環境にもよるが、サーバに直接アクセスできるような環境であれば活用しようと思う。