如何使用gradle将源热部署到tomcat7?

时间:2014-12-23 15:22:17

标签: java tomcat web-applications gradle hotdeploy

是否有人知道gradle“热部署”插件(或中间件作为shell脚本)将源文件夹中的文件直接复制到tomcat的webapps目录中的项目文件夹(不是gretty或{{3}之类的嵌入式服务器};版本7,环境无关)?

最后,我想实现一个智能开发工作流程,以便在代码制作过程中(重新,取消)部署java Web应用程序。我正在寻找类似gradle tomcat plugin任务的内容。

场景:在WEB-INF / lib文件夹中包含自包含的可执行jar文件的Java Web应用程序。

  • 在gradle任务上注册观察者任务
  • java源已更改
  • tomcat停止了
  • 删除WEB-INF / lib文件夹中的jar文件
  • 部署jar文件
  • 将jar复制到WEB-INF / lib文件夹中 (删除所有日志文件)
  • 启动tomcat

如果更改静态源(例如JSP,JS等),则不需要重新启动tomcat。

解决方案

我想到了我们在办公室的工作实践。我的同事和我,我们在Windows机器上编程,我们在IDEA中使用键映射配置来启动和停止我们本地安装的Tomcat。

对我来说最简单的方法是定义一个用户相关的CATALINA_HOME系统环境变量,该变量引用Tomcat服务器的路径。

CATALINA_HOME = C:\Program Files\apache-tomcat-7.0.56

我定义了一个部署任务,它将已编译的war文件复制到webapps文件夹中((重新)通过IEDA手动启动Tomcat)。

task deploy(type: Copy) {
    def WEBAPPS_HOME = System.getenv()['CATALINA_HOME'] + '/webapps'
    from 'build/libs/app.war' into WEBAPPS_HOME
    dependsOn war
}

没有人需要更改build.gradle文件中的Tomcat路径,或者没有其他user.config文件被git忽略。 但我不喜欢手动Tomcat处理,在Mac上使用环境变量是不寻常的。

因此,我决定在嵌入式Tomcat服务器上搜索grunt watch进行本地开发。它是由Gradle cargo plugin的Benjamin Muschko(Gradleware工程师)推荐的,他描述了How to use local tomcat?...之间的差异。

此插件的设置非常简单。我不需要解释。

没有人需要安装自己的Tomcat,每个人都使用相同的版本服务器。

对于我们的nigthly构建,我使用Gradle包装器的强大功能作为Jenkins任务配置。 我执行了一个wintods批处理命令。

cd "%WORKSPACE%\app"
gradlew.bat clean build

1 个答案:

答案 0 :(得分:-2)

我使用Jenkins来管理应用程序的部署。

有许多插件可以帮助完成这些任务,并且能够编写自己的脚本。

Jenkins具有高度可配置性,因此您可以根据自己的需要进行调整。

Jenkins URL