Gradle HttpFileServer,继续运行,但在ctrl+;C
在Gradle构建过程中,我需要运行一个简单的web服务器来提供一些静态内容。我用的是格拉德的 下面是我的Gradle HttpFileServer,继续运行,但在ctrl+;C,gradle,Gradle,在Gradle构建过程中,我需要运行一个简单的web服务器来提供一些静态内容。我用的是格拉德的 下面是我的build.gradle的一个非常简单的版本: apply plugin: 'groovy' task server() { doLast { def root = new File(project.buildDir, '/site') def port = 8765 def factory = new SimpleHttpFileServerFactory()
build.gradle的一个非常简单的版本:
apply plugin: 'groovy'
task server() {
doLast {
def root = new File(project.buildDir, '/site')
def port = 8765
def factory = new SimpleHttpFileServerFactory();
def server = factory.start(root, port)
println "HTTP server started on $port"
}
}
我面临以下两个问题:
- 运行
gradle服务器时,gradle执行、启动服务器,然后退出(守护进程显然停留在后台,服务器运行,这导致了第二个问题)
- 我不可能通过gradle停止服务器。再次运行
gradle服务器
时,由于端口正在使用,因此出现异常
我想采用以下任一解决方案:
运行gradle服务器时
,gradle会一直运行,直到我按下ctrl+c键,然后服务器也会被关闭
有两个任务,gradle startServer
和gradle stopServer
用于启动和停止
我该如何实现这一点,或者是否有其他更好的解决方案?有点像黑客,但它可以工作,服务器任务将挂起,SIGKILL
也将杀死服务器
apply plugin: 'groovy'
task server() {
doLast {
def root = new File(project.buildDir, '/site')
def port = 8765
def factory = new SimpleHttpFileServerFactory();
def server = factory.start(root, port)
println "HTTP server started on $port"
while(true) Thread.sleep(1000)
}
}
简单高效,谢谢!我发现,有时在按下ctrl+c键后,服务器实际上会在几秒钟内被杀死,但这对我来说不是问题。