ヒトリ歩き

愚痴とかいろいろ書きます

MavenからTomcatにデプロイする

試験工程に入ると頻繁に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のマニュアルを参照してください。

tomcat.apache.org

setting.xmlに追加したユーザ情報を設定

setting.xmlTomcatに設定したユーザのログイン認証情報を設定する。

<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://サーバのIPアドレス>:ポート番号/manager/text))
server setting.xmlで設定したTomcatの認証情報を指定
path コンテキストパスを指定する
update すでにデプロイされている場合にアンデプロイするかどうかの設定。trueにしておくとredeployをゴールに指定する必要はなくなるのでtrueにしておくと良い。

Tomcatにデプロイする

Goalsに「tomcat7:deploy」を指定して実行するとデプロイが行われる。

f:id:kotapontan:20201101204749p:plain

[INFO] tomcatManager status code:200, ReasonPhrase:
[INFO] OK - コンテキストパス [/SampleDeployTomcatForMvn] でアプリケーションを配備しました

感想

Mavenからデプロイすることで、手動によるファイルの転送をする時間が省けるので少しは効率的に作業ができると思う。 サーバを跨ってのデプロイのやり方までは調べていないので実際の業務環境にもよるが、サーバに直接アクセスできるような環境であれば活用しようと思う。

参考

tomcat.apache.org