gradle:将war复制到tomcat目录

Dav*_*ave 36 gradle

我正在尝试编写一个Gradle任务,它将生成的war文件复制到我的本地tomcat实例:

这不起作用,我不知道如何调试它:

 task deploylocal() << {
    println "Copy from ${buildDir}\\libs into ${tomcatHome}/webapps"
    copy{
      from "${buildDir}\\libs"
      into "${tomcatHome}/webapps"
      include '*.war'
    }
  }
Run Code Online (Sandbox Code Playgroud)

关于下一步该怎么做的任何想法?

Uri*_*ter 50

WAR任务知道它生成的工件.

task deployToTomcat(type: Copy) {
    from war.archivePath
    into "${tomcatHome}/webapps"
}
Run Code Online (Sandbox Code Playgroud)


Pav*_*vel 14

我完成了这个:

task deploy (dependsOn: war){
    copy {
        from "build/libs"
        into "C:/dev/jetty-distribution-9.1.4.v20140401/webapps"
        include "*.war"
    }
}
Run Code Online (Sandbox Code Playgroud)

像这样运行它:

gradle deploy
Run Code Online (Sandbox Code Playgroud)


小智 12

你当然可以使用tomcat插件.我的设置阻止我使用/修改开箱即用的war和tomcat选项.

我个人喜欢以下风味(从我的build.gradle复制).

tomcat_home='tomcat_location'
tomcat_bin=tomcat_home + '/bin'
tomcat_start=tomcat_bin + '/startup.sh'
tomcat_stop=tomcat_bin + '/shutdown.sh'
tomcat_webapps = tomcat_home + '/webapps'

task tom << {
    if (project.hasProperty('start')) {
        startTom()
    } else if (project.hasProperty('stop')) {
        stopTom()
    } else if (project.hasProperty('deployNstart')) {
        stopTom()
        webappsCopy()
        startTom()
    } else {
        throw new RuntimeException('unrecognized option')
    }
}

def stopTom() {
    executeCmd(tomcat_stop)
}

def startTom() {
    executeCmd(tomcat_start)
}


def executeCmd(command) {
    proc = command.execute()
    proc.waitFor()
}

def webappsCopy() {
    copy {
        from 'war file location' // could be exploded or war itself
        into tomcat_webapps
    }
}
Run Code Online (Sandbox Code Playgroud)

- 从命令行调用"tom"任务中包含的各种选项 -

$ gradle tom -Pstart
$ gradle tom -Pstop
$ gradle tom -PdeployNstart
Run Code Online (Sandbox Code Playgroud)

随着我添加更多与Tomcat相关的命令/选项,这可能会进一步增长.几个指针:

  1. 将位置等移动到gradle.properties,以便它可以在不同的环境中工作.
  2. 轮询您的tomcat服务器端口以微调选项和消息.
  3. 转移到可以重用的插件/任务代码.

这个限量版现在适合我:-)


The*_*ain 7

或者,您可以利用gradle-tomcat-plugin


Ben*_*hko 7

你可以给Gradle Cargo插件一个机会.它允许您将WAR文件部署到本地以及远程Tomcat.