Gradle Exec Task停止tomcat

时间:2017-08-06 18:16:57

标签: java tomcat gradle cmd gradlew

我在这里查看这个文档:https://docs.gradle.org/3.4.1/dsl/org.gradle.api.tasks.Exec.html给出了如何关闭/打开tomcat的示例。

然而,它没有很好地解释commandLine期望的确切参数。

所以,下面的代码失败了。你能分享一下吗?

task stopTomcat(type:Exec) {
    println "$System.env.TOMCAT"

    workingDir "${System.env.TOMCAT}" + '/bin/'

    //on windows:
    commandLine './catalina.sh stop'

    //on linux
    //commandLine './stop.sh'

    //store the output instead of printing to the console:
    standardOutput = new ByteArrayOutputStream()

    //extension method stopTomcat.output() can be used to obtain the output:
    ext.output = {
        return standardOutput.toString()
    }
}

我已按上述方式配置了我的任务,但在运行任务时确实失败了。

  

引起:net.rubygrapefruit.platform.NativeException:不能   开始' ./ catalina stop'

1 个答案:

答案 0 :(得分:1)

您使用的是Windows还是Unix?

通常,您需要在平台的命令行终端上识别适合您的命令。然后使用适当的平台风格"在你的Gradle任务中。

例如,我有Tomcat 7.x.要在Unix上关闭,使用$TOMCAT_HOME/bin中的终端,我会使用./shutdown.sh。在这种情况下,任务仅使用:

  commandLine './shutdown.sh' 

在Windows上,我会使用shutdown.bat。在这种情况下,任务将使用:

  commandLine 'cmd', '/c', 'shutdown.bat'

请注意,它正在使用cmd来调用BAT文件。由于Windows的工作方式,commandLine将为任何BAT文件提供该表单。