[英]How to run jetty 7+ with specified war with groovy/gradle?
I want to run Jetty 7+ with gradle build, but unlucky looks like there is no way to do this with jettyRun. 我想用gradle构建运行Jetty 7+,但不幸的是看起来没有办法用jettyRun来做这件事。 So probably simplest idea to achieve what I want would be to use custom target: 因此,实现我想要的最简单的想法是使用自定义目标:
task runJetty << {
def server = new Server()
// more code here
server.start()
server.join()
}
Unlucky I just started with gradle and I don't know groovy either, so it's hard for me to create proper target. 不幸的是我刚从gradle开始,我也不知道groovy,所以我很难创建合适的目标。 I was looking over the internet but I wasn't able to find any solution. 我正在寻找互联网,但我找不到任何解决方案。 Can anyone hit me with some sample groovy code which can run existing jar with jetty? 任何人都可以用一些样本groovy代码打我,可以用jetty运行现有的jar吗?
Ok, I found out how to run it using jetty directly from repository: 好的,我发现如何直接从存储库使用jetty运行它:
jettyVersion = "8.1.0.RC0"
configurations {
jetty8
}
dependencies {
jetty8 "org.mortbay.jetty:jetty-runner:$jettyVersion"
}
task runJetty8(type: JavaExec) {
main = "org.mortbay.jetty.runner.Runner"
args = [war.archivePath]
classpath configurations.jetty8
}
Here's a working version, using the jetty ant tasks. 这是一个使用jetty ant任务的工作版本。 This finally enabled me the proper control with deamon=true. 这最终使我能够使用deamon = true进行适当的控制。
configurations { jetty }
dependencies { jetty 'org.eclipse.jetty:jetty-ant:9.0.4.v20130625' }
task jetty(dependsOn: build) << {
ant.taskdef(name: 'jettyRun', classname: 'org.eclipse.jetty.ant.JettyRunTask', classpath: configurations.jetty.asPath, loaderref: "jetty.loader")
ant.typedef(name: "connector", classname: "org.eclipse.jetty.ant.types.Connector", classpath: configurations.jetty.asPath, loaderref: "jetty.loader")
ant.jettyRun(daemon:true, stopPort: 8999, stopKey: "STOP") {
webApp(war: THE_WAR_PRODUCING_TASK.archivePath, contextPath: '/context')
connectors { connector(port: 9000) }
systemProperties {
systemProperty(name: 'environment.type', value: 'development')
}
}
}
task jettyStop << {
ant.taskdef(name: 'jettyStop', classname: 'org.eclipse.jetty.ant.JettyStopTask', classpath: configurations.jetty.asPath)
ant.jettyStop(stopPort: 8999, stopKey: "STOP")
}
有一个jetty-eclipse-plugin允许你运行更新版本的jetty https://github.com/Khoulaiz/gradle-jetty-eclipse-plugin
jetty plugin supports jetty 6.1.25 at present jetty插件目前支持jetty 6.1.25
You can use something like this: 你可以使用这样的东西:
jettyRoot = '/path/to/your/jetty/root'
task runJetty7 << {
description = "Runs jetty 7"
ant.java(dir: jettyRoot, jar: jettyRoot + '/start.jar', failOnError: 'true', fork: 'true') {
classpath {
...
}
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.