Plugins gradle应用程序插件已关闭

Plugins gradle应用程序插件已关闭,plugins,gradle,Plugins,Gradle,我正在使用gradle应用程序插件运行我的应用程序。下面是我的build.gradle: group 'demo.jersey' version '1.0-SNAPSHOT' apply plugin: 'groovy' apply plugin: 'java' apply plugin: 'application' sourceCompatibility = 1.5 mainClassName = "com.example.Main" repositories { mavenC

我正在使用gradle应用程序插件运行我的应用程序。下面是我的build.gradle:

group 'demo.jersey'
version '1.0-SNAPSHOT'

apply plugin: 'groovy'
apply plugin: 'java'
apply plugin: 'application'

sourceCompatibility = 1.5

mainClassName = "com.example.Main"

repositories {
    mavenCentral()
}

dependencies {
    compile 'org.codehaus.groovy:groovy-all:2.3.11'
    compile 'org.glassfish.jersey.containers:jersey-container-grizzly2-http:2.22.1'
    testCompile group: 'junit', name: 'junit', version: '4.11'
}
当我运行gradle run时,我可以看到我的应用程序已启动,但它立即被关闭。下面是我的主课。您知道如何在不关机的情况下阻止应用程序吗

package com.example;

import org.glassfish.grizzly.http.server.HttpServer;
import org.glassfish.jersey.grizzly2.httpserver.GrizzlyHttpServerFactory;
import org.glassfish.jersey.server.ResourceConfig;

import java.io.IOException;
import java.net.URI;

public class Main {

    public static final String BASE_URI = "http://localhost:8080/myapp/";
    public static HttpServer startServer() {
        final ResourceConfig rc = new ResourceConfig().packages("com.example");
        return GrizzlyHttpServerFactory.createHttpServer(URI.create(BASE_URI), rc);
    }

    public static void main(String[] args) throws IOException {
        final HttpServer server = startServer();
        System.out.println(String.format("Jersey app started with WADL available at "
            + "%sapplication.wadl\nHit enter to stop it...", BASE_URI));
        System.in.read();
        server.stop();
    }
}

它停止是因为您调用了
server.stop()以便程序完成。注释掉这一行,它将继续运行并侦听传入的请求。

我刚刚尝试过,它完全按照您所说的那样工作。但是我不明白的是System.in.read()应该阻止执行,直到我在控制台上输入了一些东西。为什么在我运行gradlerun命令时它不阻止执行?老实说,我不是100%确定。问题可能是gradle和应用程序在不同的线程中运行,并且(不知何故)将回车传递给停止它的应用程序。