为了进行服务开发,我的团队最近从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消除开发重新部署相关推荐

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  8. 笔记合并_.NET Core开发实战(第23课:静态文件中间件:前后端分离开发合并部署骚操作)学习笔记(上)...

    23 | 静态文件中间件:前后端分离开发合并部署骚操作 我们先来看一下静态文件中间件有哪些能力 1.支持指定相对路径 2.支持目录的浏览 3.支持设置默认文档 4.支持多目录映射 源码链接: http ...

  9. 居然仅用浏览器,就完成了Spring Boot应用的开发与部署!

    点击上方蓝色"程序猿DD",选择"设为星标" 回复"资源"获取独家整理的学习资料! 最近有幸试用了一下阿里云的一个新产品:云开发平台,体验一 ...

最新文章

  1. 关于机器学习实战,那些教科书里学不到的12个“民间智慧”
  2. [收藏] 王永民先生:自我白描
  3. java观察者设计模式
  4. cos66度20分怎么用计算机算,物化2期末考试计算复习题
  5. C++ 学习之旅(5)——设置Setup文件目录
  6. C/C++学习笔记:算法知识之平衡树学习笔记,收藏一波吧!
  7. 当前以太坊上DeFi协议总锁仓量为374.7亿美元
  8. 用折半查找法查找某一字符在字符串中的位置
  9. JVM笔记1:Java内存模型及内存溢出
  10. ORACLE数据库的模式对象的管理与维护
  11. 黑苹果intel网卡驱动
  12. 机器视觉——光源选型
  13. 计算机组装维护理论知识大全,计算机组装与维护知识汇总.docx
  14. 进政府网站要求IE8浏览器,IE8浏览器进不去,使用IE进政府机构网站提示非法进入提示不能直接使用URL进入网址,windows10安装IE8提示系统不支持【解决办法】
  15. 如何将桌面上的qlv格式转换成mp4视频
  16. 电科 | 电子器件微纳米加工技术
  17. uva 10105(数论)
  18. 本地化 A NOTE 桌面便签软件 ---最佳开源软件之一
  19. java设计大全——计算机设计参考选题(SSM+SpringBoot+vue+html)(持续更新)
  20. 短视频媒体怎么用手机去水印

热门文章

  1. SpringCache与Redis
  2. 多线程的线程通信(生产消费)
  3. vmware启动多个虚拟机
  4. 583. 两个字符串的删除操作用时6ms的另类解法
  5. JSP引入CSS文件无法生效的问题
  6. java gradle构建_在Gradle中为JPMS构建Java 6-8库
  7. 手游建筑美术资源_建筑商和机械手
  8. mega2560单片机开发_[MEGA DEAL] Ultimate Java开发和认证指南(59%折扣)
  9. java cr_WildFly 10 CR 2发布– Java EE 7,Java 8,Hibernate 5,JavaScript支持热重载
  10. apache lucene_Apache Lucene基础教程