
はじめに
Eclipse GlassFish 7.0.18 以降、glassfish-embedded の jar が実行可能 jar になったので、コマンドラインから war を渡すことで直接アプリケーションを実行できるようになりました。
Gradle で war を実行
Gradle で glassfish-embedded を実行すれば、ビルドした war を実行できます。
plugins {
war
}
// ...
task<Exec>("run") {
dependsOn("war")
// download glassfish-embedded-all
val url = "https://repo1.maven.org/maven2/org/glassfish/main/extras/glassfish-embedded-all/7.0.22/glassfish-embedded-all-7.0.22.jar"
val dest = layout.projectDirectory.file("glassfish-embedded-all-7.0.22.jar")
if (!dest.asFile.exists()) uri(url).toURL().openStream().use {
`java.nio.file`.Files.copy(it, dest.asFile.toPath())
}
// run glassfish-embedded-all with war
commandLine("java",
"-Duser.language=en", "-Duser.country=US",
"-jar", dest.asFile.absolutePath, "build/libs/app.war")
standardInput = System.`in`
}
上記 run タスクを作成しておけば、以下のように war をビルドしてそのまま実行することができます。
./gradlew war run