Gradeを使って配布されているWarファイルをjetty上で動作させる
やりたいこと
ソース環境をGradleを使ってビルドして、Jettyで起動するのではなく、
配布されてるwarファイルをjettyへデプロイして、起動して、サクッと動作させたい。
warファイルは既に手元にある状態で、ソースからのビルドはしたくない。
「java -jar xxx.war」 で動かせるものもあるけど、
そうなっていないWarファイルを手軽に動かしたい。
jettyでwarファイルのデプロイはどうやる?
リファレンスだと、
warファイルってどこにあったっけ?
samples\webApplication\quickstart で試す。
─build │ ├─classes │ │ └─main │ │ └─org │ │ └─gradle │ │ └─sample │ │ Greeter.class │ │ │ ├─dependency-cache │ ├─libs │ │ quickstart.war ←デプロイしたWarファイル │ │ ---->8 ばっさり 8<---- │ └─war │ MANIFEST.MF │ └─src └─main ├─java │ └─org │ └─gradle │ └─sample │ Greeter.java │ ├─resources │ greeting.txt │ └─webapp index.jsp
libs/XXX.war におけばよさそうだ。
構成
. │ build.gradle │ └─build └─libs webapp-quickstart.war
build.gradle
samples\webApplication\quickstart を真似る
apply plugin: 'war' apply plugin: 'jetty' httpPort = 8080 stopPort = 9451 stopKey = 'foo'
実行
Gradle jettyRunwar :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :war > Building > :jettyRunWar > Running at http://localhost:8080/DeloyAndRun
実行してるディレクトリ名になってしまってる。
build\libs\DeloyAndRun.war ができてるし。
warファイル名を設定
war { baseName = 'quickstart' archiveName = "webapp-quickstart.war" from 'war' }
実行
gradle jettyRunWar :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :war > Building > :jettyRunWar > Running at http://localhost:8080/quickstart
結果
あれ??
原因
warファイルが置き換わってる
2013/10/26 16:03 261 webapp-quickstart.war
何が動いてる?
Gradle -i jettyRunWar Starting Build Settings evaluated using empty settings script. Projects loaded. Root project using build file 'C:\workspace\Gradle_SandBox\DeloyAndRun\build.gradle'. Included projects: [root project 'DeloyAndRun'] Evaluating root project 'DeloyAndRun' using build file 'C:\workspace\Gradle_SandBox\DeloyAndRun\build.gradle'. Starting file lock listener thread. All projects evaluated. Selected primary task 'jettyRunWar' Tasks to be executed: [task ':compileJava', task ':processResources', task ':classes', task ':war', task ':jettyRunWar'] :compileJava (Thread[main,5,main]) started. :compileJava Skipping task ':compileJava' as it has no source files. :compileJava UP-TO-DATE :compileJava (Thread[main,5,main]) completed. Took 0.652 secs. :processResources (Thread[main,5,main]) started. :processResources Skipping task ':processResources' as it has no source files. :processResources UP-TO-DATE :processResources (Thread[main,5,main]) completed. Took 0.052 secs. :classes (Thread[main,5,main]) started. :classes Skipping task ':classes' as it has no actions. :classes UP-TO-DATE :classes (Thread[main,5,main]) completed. Took 0.034 secs. :war (Thread[main,5,main]) started. :war Skipping task ':war' as it is up-to-date (took 0.113 secs). :war UP-TO-DATE :war (Thread[main,5,main]) completed. Took 0.521 secs. :jettyRunWar (Thread[main,5,main]) started. :jettyRunWar Executing task ':jettyRunWar' (up-to-date check took 0.001 secs) due to: Task has not declared any outputs. Configuring Jetty for root project 'DeloyAndRun' Logging to Logger[org.mortbay.log] via org.mortbay.log.Slf4jLog Context path = /quickstart Tmp directory = determined at runtime Web defaults = org/mortbay/jetty/webapp/webdefault.xml Web overrides = none Starting jetty 6.1.25 ... jetty-6.1.25 No Transaction manager found - if your webapp requires one, please configure one. Started SelectChannelConnector@0.0.0.0:8080 > Building > :jettyRunWar > Running at http://localhost:8080/quickstart
warタスクが動作してるから、空のwarファイルができるのか。
jettyRunWarタスクはwarタスクに依存してる
Warタスクを実行しないようにすればいいのかだら、-x Warをつける
Gradle jettyRunWar -x War > Building > :jettyRunWar > Running at http://localhost:8080/quickstart
でも、-x Warを付け忘れると、Warファイルが上書きされてしまうので、どうにかしたい。
依存関係でどにかできるか?
warタスクを除外するのはどうする?
15.8.3. タスクの有効化と無効化
これでいけそう。
task warRun {
war.enabled = false
dependsOn jettyRunWar
}
実行結果
Gradle warRun :compileJava UP-TO-DATE :processResources UP-TO-DATE :classes UP-TO-DATE :war SKIPPED > Building > :jettyRunWar > Running at http://localhost:8080/quickstart
環境
------------------------------------------------------------ Gradle 1.8 ------------------------------------------------------------ Build time: 2013-09-24 07:32:33 UTC Build number: none Revision: 7970ec3503b4f5767ee1c1c69f8b4186c4763e3d Groovy: 1.8.6 Ant: Apache Ant(TM) version 1.9.2 compiled on July 8 2013 Ivy: 2.2.0 JVM: 1.7.0_45 (Oracle Corporation 24.45-b08) OS: Windows 7 6.1 amd64
添削歓迎
ここ間違ってるよ
こうした方がよくないか?
こういうことなんじゃないかな。
この環境だとこうなるよ
などなど
方法は、コメント、はてブ、Twitter @orange_clover宛 で、お願いします。