部署gradle

为了进行服务开发,我的团队最近从Grails转到了Dropwizard框架。 但是,我真正从Grails堆栈中真正错过的一件事是自动重新加载:对源文件的任何更改在保存后立即显示在运行的应用程序中,而无需重新启动。 事实证明,将该功能也引入Gradle构建中是可行的。

Spring Loaded是Grails在其后台使用的库。 它支持重新加载很多类型的更改,而无需重新启动JVM:

  • 添加/修改/删除方法/字段/构造函数
  • 更改类型/方法/字段/构造函数的注释
  • 在枚举类型中添加/删除/更改值

我需要的另一块是监视插件 :当源文件更改时,可以触发Gradle任务的东西。

对于完整的工作示例,请克隆我的演示Github存储库 。

第一步设置是添加其他配置 。 这将spring-loaded.jar(仅在开发过程中需要)与标准配置(例如compile)隔离开:

configurations {agent
}

依赖性块的内容如下:

configurations {
dependencies {compile 'org.codehaus.groovy:groovy-all:2.3.4'compile 'io.dropwizard:dropwizard-core:0.7.1'compile 'com.sun.jersey:jersey-client:1.18'agent "org.springframework:springloaded:${springloadedVersion}"
}

编译依赖项是Dropwizard项目中期望的标准集。 以“ agent”开头的行将Spring Loaded依赖项添加到之前定义的agent配置中。 构建脚本使用此依赖关系将spring-loaded.jar放入文件系统。 springloadedVersion是在构建文件中较早定义的常量。

task copyAgent(type: Copy) {from configurations.agentinto "$buildDir/agent"
}
run.mustRunAfter copyAgent

上面的copyAgent任务将获取spring-loaded.jar文件并将其复制到build目录中,以供以后用作javaagent 。 run也配置为遵循链中的copyAgent

buildscript {repositories {jcenter()}dependencies {classpath 'com.bluepapa32:gradle-watch-plugin:0.1.3'}
}apply plugin: 'watch'
watch {groovy {files files('src/main/groovy')tasks 'compileGroovy'}
}task watchThread() << {Thread.start {project.tasks.watch.execute()}
}
run.mustRunAfter watchThread

上面的脚本块添加并配置了监视。 buildscript块将适当的存储库和watch插件添加为依赖项。 watch块配置插件; 只要src / main / groovy中有更改,Groovy源将被重新编译。 watchThread任务执行监视并行。 这是必需的,因为最终作业将执行两个连续运行的任务:监视和运行。 手表通常会阻止运行 。 最后,将运行任务配置为在两者都属于链时遵循watchThread

run {args = ['server', 'app.yaml']jvmArgs = ["-javaagent:${new File("$buildDir/agent/springloaded-${springloadedVersion}.jar").absolutePath}", '-noverify']
}task reloading(dependsOn: [watchThread, copyAgent, run])

代码的最后一部分使用javaagent标志配置run命令。 这告诉JVM使用Spring Loaded并使其发挥作用。 Spring Loaded还需要noverify标志。 重新加载任务是开发期间要运行的实际任务。 它串接任务以复制代理,旋转线程以监视源更改并运行Dropwizard的main方法。

这种配置结构还可以支持Dropwizard之外的框架:真正具有主要方法的任何东西。 尽管它不适用于所有类型的代码更改,但可以消除开发过程中大量应用程序的重新启动。

翻译自: https://www.javacodegeeks.com/2014/09/eliminating-development-redeploys-using-gradle.html

部署gradle

部署gradle_使用Gradle消除开发重新部署相关推荐

  1. 使用Gradle消除开发重新部署

    为了进行服务开发,我的团队最近从Grails转移到了Dropwizard框架. 但是,我真正从Grails堆栈中真正错过的一件事是自动重新加载:对源文件的任何更改都会在保存后立即显示在运行的应用程序中 ...

  2. 前后端分离的项目部署到tomcat_如何在开发时部署和运行前后端分离的JavaWeb项目...

    在开发中大型的JavaEE项目时,前后端分离的框架逐渐成为业界的主流,传统的单机部署前后端在同一个项目中的工程项目越来越少.这类JavaWeb项目的后端通常都采用微服务的架构,后端会被分解为诸多个小项 ...

  3. idea tomcat部署web项目_项目开发之部署帆软到Tomcat服务一

    书接上回 上一篇文章介绍了两种图表取数的方式,新增数据库查询和通过存储过程取数,其他的内置数据集,文件数据集和关联数据集等方式暂时还没有用到,先暂时不介绍了,等之后用到了或者等小编有时间试过之后再来做 ...

  4. 告别繁琐提升效率,Docker 帮您降低从开发到部署的复杂性

    出品丨Docker公司(ID:docker-cn) 编译丨小东 每周一.三.五晚6点10分 与您不见不散! 在 Mobelux,开发项目永远不会停止.我们一直在研究新的和现有的代码库.无论何时,都有多 ...

  5. MathWorks的AI之路:面向工业场景,打通开发到部署的全链路

    作者 | 阿司匹林 AI正在快速发展,并在更多的领域落地.对于MATLAB和Simulink的开发商MathWorks来说,把握AI的机会,显得尤为重要. 不少人对MATLAB等的印象依然停留在学校期 ...

  6. 用对方法,开发与部署深度学习原来如此简单……

    相信大部分人都会谈癌色变,正如我们所知的一样,晚期癌症患者的生存率低于 20%,而尽管早期患者可以被治愈,且治愈率高达 90% 以上,但因为大部分癌症早期起病隐匿,更重要的原因在于受限于现有医疗水平, ...

  7. 【Smobiler企业APP开发之一】开发环境部署

    最近研究了下Smobiler-.net移动开发,对于做企业APP开发Smobiler还是够用的,况且是完全使用C#进行编程,对于使用C#进行程序设计的程序员来说还是很容易上手的. 本章节主要介绍Smo ...

  8. 为ML开发、部署提供靠谱的系统工程方法,NASA、牛津、微软等多家机构提出MLTRL框架

    MLTRL 框架具备鲁棒性好.可靠性强等优点,并定义了一种通用语言,支持不同团队和组织的人员协同工作. 选自arXiv,作者:Alexander Lavin等,机器之心编译,编辑:陈萍 使用现代工具可 ...

  9. 基础、数据、开发、部署,AI 时代企业的全方位升级

    当"AI+"的趋势无可回避,企业领导者们需要比过往更认真地思考,如何适应全新的AI时代和其所代表的未来发展趋势. 头图来源 | 视觉中国 当AI成为基础设施 眼下,已经没有企业的领 ...

最新文章

  1. centos挂载u盘只读_完美解决linux下U盘文件只读的问题
  2. 变量定义和声明的区别~~~概念上千万不要栽跟头!!!
  3. 工作流实战_06_flowable 流程定义的删除
  4. iPhone 播放音频声音文件
  5. Filter使用详解
  6. 计算机基础与python安装
  7. 蓝桥杯 ALGO-151 算法训练 6-2递归求二进制表示位数
  8. AC日记——[HNOI2012]永无乡 bzoj 2733
  9. HTML学习基础教程
  10. Matlab图像处理系列1———线性变换和直方图均衡
  11. 大数据学习入门看什么书?大数据新手怎么入门?
  12. 【NanoPi T2】 8.uboot gmac网卡驱动(4) - 移植rtl8211e网卡驱动(首发)
  13. 我从Web前端开发转到网页游戏开发
  14. c# wifi串口通信_C#串口通信 SerialPort类
  15. 【微信小程序】一文读懂页面导航
  16. lol的不只有英雄联盟,还有程序开发天团!
  17. Java 获取本地时间与网络时间
  18. python3统计英文诗歌每行单词数量
  19. 浙江查获5000余张假火车票 系跨省家族式作案网上交易
  20. 测试中缺陷的管理流程

热门文章

  1. POJ1006-Biorhythms【中国剩余定理】
  2. P4556,jzoj3397-[GDOI2014模拟]雨天的尾巴【树链剖分,线段树】
  3. Oracle入门(十五)之数据库锁
  4. Oracle入门(十四.11)之使用显式游标属性
  5. 直面Java第45期
  6. Java内存泄漏介绍
  7. 装饰器模式(讲解+应用)
  8. C#的float、double与decimal
  9. (十一)MyBatis的动态SQL:trim元素
  10. 有些事,父母一定不能依着孩子!