Tomcat 8にantからリモートデプロイする

今更antかよ!というつっこみは置いておいて、
Webに残っているドキュメント類がことごとく古くて使用できなかったので更新メモとして。

1. antのフォルダにTomcatから以下のライブラリをコピーする。

  • catalina-ant.jar
  • tomcat-util.jar

2. Tomcatのconf/tomcat-users.xmlに以下の記載を追加(ユーザー名、パスワードは任意)

<user username="tomcat" password="tomcat" roles="manager-script" />

3. build.xmlに以下のtaskdefを追加

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project basedir="." default="build" name="ant_project">
<taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
・
・
・

4. あとはdeployタスクを実行

<deploy url="http://localhost:8080/manager/text"
        username="tomcat"
        password="tomcat"
        path="/${ant.project.name}"
        update="true"
        war="${basedir}/target/${ant.project.name}.war" />

username/passwordはtomcat-users.xmlで指定したもの。

antタスクの依存ライブラリが増えてた。

という感じで。

2017/06/01追記
最初はlocalWarというのが増えたとか書いてたけど、単純にTomcatのバグを踏んでいただけだった・・・・・・
バージョンによっては上の設定だと動かないのでご注意を。
動かない場合は、以下のパッチで直ってますのでantの依存ライブラリだけ入れ替えてあげればおk。
https://github.com/apache/tomcat/commit/a64839abf2f4eafb48b738794588a4a99ece0320