🪰
GradleでWildflyを自動でダウンロードしてからArquillianを実行する
Java EEなアプリケーションのテストを回すのにArquillian が便利なんですけど、サンプル書くのに手動でアプリケーションサーバをダウンロードするのはちょい面倒なので、Gradleにダウンロードしてもらうっていう話です。
アプリケーションサーバはWildflyを使用します。
それではbuild.gradle
をいじりましょー!
まずdependencies
にWildflyのアーカイブを追加します。
dependencies {
archives "org.wildfly:wildfly-dist:$wildflyVersion@zip"
}
次にアーカイブをunzipするタスクを書きます。
task readyWildfly(type: Copy) {
def wildflyZip = configurations.archives.find { it.name ==~ /wildfly.*/ }
from zipTree(wildflyZip)
into buildDir
inputs.file wildflyZip
outputs.upToDateWhen { new File(buildDir, "wildfly-$wildflyVersion").exists() }
}
既にunzipされたWildflyがあったらタスクをスキップしてほしいのでinputs.file
とoutputs.upToDateWhen
でこちょこちょやっています。
最後にテストを実行する前にreadyWildfly
タスクを実行するようにします。
test.dependsOn readyWildfly
あとはgradlew build
するだけ。
ログはこんな感じ。
:compileJava
:processResources UP-TO-DATE
:classes
:war
:assemble
:readyWildfly
:compileTestJava
:processTestResources
:testClasses
:test
:check
:build
BUILD SUCCESSFUL
Total time: 31.107 secs
This build could be faster, please consider using the Gradle Daemon: http://gradle.org/docs/2.4/userguide/gradle_daemon.html
test
の前にreadyWildfly
タスクが実行されていますね。
この時点で所定の場所へWildflyがunzipされています。
ではもう一度gradlew build
してみましょう。
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war UP-TO-DATE
:assemble UP-TO-DATE
:readyWildfly
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build UP-TO-DATE
BUILD SUCCESSFUL
Total time: 10.617 secs
This build could be faster, please consider using the Gradle Daemon: http://gradle.org/docs/2.4/userguide/gradle_daemon.html
なんということでしょう!
readyWildfly
タスクがスキップされま......されてない!?
あれー???(´・_・`)
も、もう一度実行だ!
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:war UP-TO-DATE
:assemble UP-TO-DATE
:readyWildfly UP-TO-DATE
:compileTestJava UP-TO-DATE
:processTestResources UP-TO-DATE
:testClasses UP-TO-DATE
:test UP-TO-DATE
:check UP-TO-DATE
:build UP-TO-DATE
BUILD SUCCESSFUL
Total time: 8.532 secs
This build could be faster, please consider using the Gradle Daemon: http://gradle.org/docs/2.4/userguide/gradle_daemon.html
なぜスキップされたし(・_・)
というわけで、なんかあと一歩で出来てない感がありますが、一番の目的である「自動でWildflyの準備してArquillian走らせる」ってのは出来たので一旦これで良いやー。
コード:
Discussion