在我的 Gradle 构建过程中,我需要运行一个简单的网络服务器来提供一些静态内容。我正在使用 Gradle 的 integrated classes为此。
这是我的 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 server
时,gradle执行,启动server,然后退出(明显是daemon在后台,server在运行,导致第二个问题)我无法通过 gradle 停止服务器。再次运行
gradle server
时,出现异常,因为端口正在使用中。
我喜欢以下任一解决方案:
当运行
gradle server
时,gradle 一直运行直到我按下 ctrl+c,然后服务器也被杀死有两个任务,
gradle startServer
和gradle stopServer
用于启动和停止
我怎样才能做到这一点,或者是否有更好的不同解决方案?
最佳答案
有点 hack-ish 但它有效,服务器任务将挂起并且 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)
}
}
关于Gradle HttpFileServer,继续运行,但在 ctrl+c 时终止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45057658/