Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/git/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Gradle HttpFileServer,继续运行,但在ctrl+;C_Gradle - Fatal编程技术网

Gradle HttpFileServer,继续运行,但在ctrl+;C

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()

在Gradle构建过程中,我需要运行一个简单的web服务器来提供一些静态内容。我用的是格拉德的

下面是我的
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键后,服务器实际上会在几秒钟内被杀死,但这对我来说不是问题。