Gradle embedded jetty plugin is not stopping autom

2019-04-13 15:59发布

I am able to run embedded jetty with gradle jettyRunWar command. However, it is not automatically stopped on program termination.

I tried below two code after searching the solution on stackoverflow and other forums. But none works.

1) build.gradle

apply plugin: 'jetty'

task runJetty() {

    jettyStop.stopPort = 8090

    dependsOn jettyRunWar
    finalizedBy jettyStop
}

2) build.gradle

apply plugin: 'jetty'

task runJetty() {

    doFirst {
        jettyRunWar.stopPort = 8090
        jettyRunWar.stopKey = 'stopKey'

        jettyRunWar.daemon = true
        tasks.jettyRunWar.execute()
    }

    doLast {
        jettyStop.stopPort = 8090
        jettyStop.stopKey = 'stopKey'

        tasks.jettyStop.execute()
    }
}

In both cases, on running runJetty task, embedded jetty server starts but did not stop on program termination.

FWIW: I am using Eclipse External Tools Configuration to start and terminate build.gradle. And, using 8080 port in the url to test.

1条回答
闹够了就滚
2楼-- · 2019-04-13 16:14

In 2) try setting the stopPort to something else, such as 8090.

I think you are actually running jetty on 8080 so that port will be occupied and you are unable to set up a 'stop' listener.

Otherwise you can just put the following in your build.gradle

// need to set the stopPort and stopKey so we are able to stop jetty!
jettyRunWar.stopPort = 8090
jettyRunWar.stopKey = 'stopKey'
jettyStop.stopPort = 8090
jettyStop.stopKey = 'stopKey'

Here is an example that worked for me in intelliJ http://pastebin.com/eTtvCdTb

I run 'jettyRunWar' and 'jettyStop' from the Gradle tasks panel in intelliJ. I've only set the parameters up for jettyRun just in case I run that task by accident, I can then shut the server down.

查看更多
登录 后发表回答