部署gradle_使用Gradle消除开发重新部署
部署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消除开发重新部署相关推荐
- 使用Gradle消除开发重新部署
为了进行服务开发,我的团队最近从Grails转移到了Dropwizard框架. 但是,我真正从Grails堆栈中真正错过的一件事是自动重新加载:对源文件的任何更改都会在保存后立即显示在运行的应用程序中 ...
- 前后端分离的项目部署到tomcat_如何在开发时部署和运行前后端分离的JavaWeb项目...
在开发中大型的JavaEE项目时,前后端分离的框架逐渐成为业界的主流,传统的单机部署前后端在同一个项目中的工程项目越来越少.这类JavaWeb项目的后端通常都采用微服务的架构,后端会被分解为诸多个小项 ...
- idea tomcat部署web项目_项目开发之部署帆软到Tomcat服务一
书接上回 上一篇文章介绍了两种图表取数的方式,新增数据库查询和通过存储过程取数,其他的内置数据集,文件数据集和关联数据集等方式暂时还没有用到,先暂时不介绍了,等之后用到了或者等小编有时间试过之后再来做 ...
- 告别繁琐提升效率,Docker 帮您降低从开发到部署的复杂性
出品丨Docker公司(ID:docker-cn) 编译丨小东 每周一.三.五晚6点10分 与您不见不散! 在 Mobelux,开发项目永远不会停止.我们一直在研究新的和现有的代码库.无论何时,都有多 ...
- MathWorks的AI之路:面向工业场景,打通开发到部署的全链路
作者 | 阿司匹林 AI正在快速发展,并在更多的领域落地.对于MATLAB和Simulink的开发商MathWorks来说,把握AI的机会,显得尤为重要. 不少人对MATLAB等的印象依然停留在学校期 ...
- 用对方法,开发与部署深度学习原来如此简单……
相信大部分人都会谈癌色变,正如我们所知的一样,晚期癌症患者的生存率低于 20%,而尽管早期患者可以被治愈,且治愈率高达 90% 以上,但因为大部分癌症早期起病隐匿,更重要的原因在于受限于现有医疗水平, ...
- 【Smobiler企业APP开发之一】开发环境部署
最近研究了下Smobiler-.net移动开发,对于做企业APP开发Smobiler还是够用的,况且是完全使用C#进行编程,对于使用C#进行程序设计的程序员来说还是很容易上手的. 本章节主要介绍Smo ...
- 为ML开发、部署提供靠谱的系统工程方法,NASA、牛津、微软等多家机构提出MLTRL框架
MLTRL 框架具备鲁棒性好.可靠性强等优点,并定义了一种通用语言,支持不同团队和组织的人员协同工作. 选自arXiv,作者:Alexander Lavin等,机器之心编译,编辑:陈萍 使用现代工具可 ...
- 基础、数据、开发、部署,AI 时代企业的全方位升级
当"AI+"的趋势无可回避,企业领导者们需要比过往更认真地思考,如何适应全新的AI时代和其所代表的未来发展趋势. 头图来源 | 视觉中国 当AI成为基础设施 眼下,已经没有企业的领 ...
最新文章
- centos挂载u盘只读_完美解决linux下U盘文件只读的问题
- 变量定义和声明的区别~~~概念上千万不要栽跟头!!!
- 工作流实战_06_flowable 流程定义的删除
- iPhone 播放音频声音文件
- Filter使用详解
- 计算机基础与python安装
- 蓝桥杯 ALGO-151 算法训练 6-2递归求二进制表示位数
- AC日记——[HNOI2012]永无乡 bzoj 2733
- HTML学习基础教程
- Matlab图像处理系列1———线性变换和直方图均衡
- 大数据学习入门看什么书?大数据新手怎么入门?
- 【NanoPi T2】 8.uboot gmac网卡驱动(4) - 移植rtl8211e网卡驱动(首发)
- 我从Web前端开发转到网页游戏开发
- c# wifi串口通信_C#串口通信 SerialPort类
- 【微信小程序】一文读懂页面导航
- lol的不只有英雄联盟,还有程序开发天团!
- Java 获取本地时间与网络时间
- python3统计英文诗歌每行单词数量
- 浙江查获5000余张假火车票 系跨省家族式作案网上交易
- 测试中缺陷的管理流程