【问题标题】:How to stop Tomcat server launched from an Eclipse Gradle Plugin?如何停止从 Eclipse Gradle 插件启动的 Tomcat 服务器?
【发布时间】:2014-01-14 10:58:05
【问题描述】:
我正在阅读来自 http://spring.io 的关于 RESTful Web 服务的教程。
我希望能够从 Eclipse 启动我的 Web 项目作为 Gradle 构建(Run As => Gradle Build...),然后在完成测试后停止它。
我知道如何启动它,但如果不退出 Eclipse(Spring Tool Suite),我就无法让它停止。
有什么建议吗?
【问题讨论】:
标签:
java
eclipse
spring
tomcat
gradle
【解决方案1】:
要从Gradle Tomcat plugin 文档中借用,只需这样做:
ext {
tomcatStopPort = 8081
tomcatStopKey = 'stopKey'
}
task doTomcatRun(type: org.gradle.api.plugins.tomcat.TomcatRun) {
stopPort = tomcatStopPort
stopKey = tomcatStopKey
daemon = true
}
task doTomcatStop(type: org.gradle.api.plugins.tomcat.TomcatStop) {
stopPort = tomcatStopPort
stopKey = tomcatStopKey
}
task someTask(type: SomeGradleTaskType) {
//do stuff
dependsOn doTomcatRun
finalizedBy doTomcatStop
}
在此示例中,someTask 是您执行的 Gradle 任务,其中 Tomcat 在任务运行之前启动,Tomcat 在任务完成后停止。
如果您更喜欢手动操作,只需配置然后通过 Eclipse 运行 tomcatStop 任务:
tomcatStop {
stopPort = 8090
stopKey = 'foo'
}
【解决方案2】:
我可以谦虚地建议您改用 gradle "jetty" 插件。考虑:
a) 它支持 jettyRun、jettyRunWar 和 jettyStop 任务。
b) 它使用 jetty 6,因此与 servlet-api 2.5 兼容(tomcat 的等效版本是 6)。
如果您对太旧的 jetty/servlet-api 不满意,请随意尝试“gretty”插件(我编写的) - 它支持 jetty 7/8/9 和 servlet-api 2.5/3.0.1/3.1。 0。 Gretty 插件在 maven Central 和 github 上可用:https://github.com/akhikhl/gretty。文档也在 github 上提供。
【解决方案3】:
在你的build.gradle
[tomcatRun, tomcatRunWar, tomcatStop]*.stopPort = 8081
[tomcatRun, tomcatRunWar, tomcatStop]*.stopKey = 'stopKey'