量産メモ帳

忘れっぽいのでメモを残しています。浅く適当に書きます。

Maven3 で war ファイルを Tomcat7 にデプロイする。

スポンサーリンク

事前条件は上と一緒。


war ファイルのビルド以上にハマったのが、Tomcat7 へのデプロイ。


最終的に上手くいった時の設定は以下の通り。
pom.xml









org.apache.tomcat.maven
tomcat7-maven-plugin
2.0-SNAPSHOT

tomcat7
http://localhost:8080/manager/text
/MyApp
${project.build.directory}/${project.artifactId}-${project.version}.war
true









Snapshots


Apache Snapshots
http://people.apache.org/repo/m2-snapshot-repository/
true
false




Apache Snapshots
http://people.apache.org/repo/m2-snapshot-repository/
true
false





settings.xml





tomcat7 user123 456


tomcat-users.xml









以下、要点だけ。

  • plugin
    • groupId … org.apache.tomcat.maven
    • artifactId … tomcat7-maven-plugin *1
    • version … 2.0-SNAPSHOT *2
    • configuration
      • server … 任意。ただし、settings.xml の記述と一致する必要がある。
      • url … http://localhost:8080/manager/text
      • warFile … ${project.build.directory}/${project.artifactId}-${project.version}.war
      • update … true
  • pluginRepository
    • id … 任意。
    • url … プラグインが格納されている場所なら何処でも良いと思う。
    • snapshots
      • enabled … true
    • releases
      • enabled … false
  • server
    • id … 任意。ただし、pom.xml の記述と一致する必要がある。
    • username … Tomcat の conf/tomcat-users.xml で定義したユーザー名。
    • password … Tomcat の conf/tomcat-users.xml で定義したパスワード。
  • tomcat-users
    • role rolename … manager-script
    • user … Maven から Tomcat にアクセスするためのユーザーを定義する。ロールは"manager-script"にする。この場合、tomcat7-maven-plugin の configuration の url は http://localhost:8080/manager/text となる。



以上の3つのファイルの定義が正しければ、"mvn tomcat7:deploy"を実行した時、war ファイルがデプロイされて、ページにアクセスできるようになる。


参考資料:



今回、ハマった原因の一つは、参考にした資料で使われている Tomcat 本体およびプラグインのバージョンアップに伴い、従来のやり方が一部通用しなくなっている事だった。

Tomcat プラグインの開発主体が、バージョン 2.x 以降は Apache に移ったようだが、groupId も変更になったりして、だいぶ混乱させられた。

しかも、2.x 系の方は公式ドキュメントが殆ど見当たらないので、正解に辿り着くまでに時間がかかった。


いやー、参った。。


*1:"tomcat-maven-plugin"ではなく、"tomcat7-maven-plugin"を指定する。

*2:"2.0"(SNAPSHOTなし)にしたら、ゴールを実行する時、POM が見つからないエラーが発生したため。