Plugins gradle应用程序插件已关闭
我正在使用gradle应用程序插件运行我的应用程序。下面是我的build.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
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和应用程序在不同的线程中运行,并且(不知何故)将回车传递给停止它的应用程序。