部署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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/339604.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

android thrift https,HTTPS 学习

https是加密的http协议&#xff0c;通过不对称加密确认对称加密的密钥&#xff0c;之后使用对称加密进行通信。通信流程&#xff1a;客户端-服务端1. 请求服务器 并添加支持的 非对称加密算法 对称加密算法 hash算法----2. 服务器返回证书&#xff0c;加密算法的种类&#xff0…

如何使用Java创建AWS Lambda函数

在本教程中&#xff0c;我们将看到如何在Java中创建AWS Lambda函数&#xff0c;我告诉你&#xff0c;这样做非常容易…… 基本上&#xff0c;我们可以通过三种方式创建AWS Lambda函数&#xff1a; –通过实现RequestHandler接口 –通过实现RequestStreamHandler接口 –自定义…

android 主流机型排行榜,10月份Android热门手机机型Top 50排行榜

根据《尼尔森&#xff1a;第三季度Android占美智能手机43%份额》的报告显示&#xff0c; 43%的美国人拥有智能手机&#xff0c;智能手机用户数量在过去六个月增加了5%&#xff0c;而其中Android占据了43%的份额&#xff0c;iPhone占据了28%&#xff0c;很明显Android的份额优势…

ejb生命周期_EJB 3.x:生命周期和并发模型(第1部分)

ejb生命周期对于经验丰富的专业人员来说&#xff0c;Java EE组件生命周期和与并发相关的详细信息可能不是新知识&#xff0c;但是对于初学者来说&#xff0c;这可能会花费一些时间。 就EJB而言&#xff0c;了解其生命周期 &#xff08;以及相关的并发场景&#xff09;对于确保…

Quarkus on OpenJ9 JVM和资源消耗

除了本机模式&#xff0c;Quarkus在JVM模式下也能很好地运行&#xff0c;这有其自身的优势。 您可以使用替代的JVM&#xff0c;例如OpenJ9&#xff0c;它可以更好地消耗资源。 在下面的视频中&#xff0c;我将展示交换JVM的简便性。 在视频中&#xff0c;我在最新标签x86_64-a…

java 并发 线程安全_Java并发教程–线程安全设计

java 并发 线程安全在回顾了处理并发程序时的主要风险&#xff08;例如原子性或可见性 &#xff09;之后&#xff0c;我们将通过一些类设计来帮助我们防止上述错误。 其中一些设计导致了线程安全对象的构造&#xff0c;从而使我们能够在线程之间安全地共享它们。 作为示例&…

交易猫鸿蒙空间,回收站是指

大家好&#xff0c;我是时间财富网智能客服时间君&#xff0c;上述问题将由我为大家进行解答。回收站是指微软Windows操作系统里的其中一个系统文件夹&#xff0c;用以把删除的文件暂时保留&#xff0c;留待将来进行恢复或永久删除。用好和管理好回收站、打造富有个性功能的回收…

Apache Camel 3.1 – XML路由的快速加载

Camel 3.1中添加的一项功能是能够更快地加载XML路由。 这是我们使Camel变得更小&#xff0c;更快的整体工作的一部分。 您可能会说ewww XML。 但坦率地说&#xff0c;有很多Camel用户使用XML定义路由来构建应用程序。 在Camel 2.x中&#xff0c;您将不得不使用Spring或OSGi Bl…

dz自动开起html,discuz论坛开启markdown 允许html代码嵌入js

|| markdown是非常好用的文档语言&#xff0c;mermaid是最流行的流程图语言&#xff0c;katex是最流行的公式语言&#xff0c;下面来讲解如何配置和使用。以下配置纯属个人研究&#xff0c;仅供参考1. 文件配置/home/www/template/你的模板/common/header.htm中加入复制代码/ho…

内存泄露严重吗_内存泄漏–测量频率和严重性

内存泄露严重吗这篇文章是我们开放文化的一部分-我们将继续分享日常工作中的见解。 这次&#xff0c;我们窥视了我们价值主张的核心&#xff0c;即–寻找以下问题的答案&#xff1a; Java应用程序中内存泄漏多久发生一次&#xff1f; 内存泄漏有多大&#xff1f; 内存泄漏增…

html选择器有哪些child,css3选择器child有哪些?css3选择器child用法详解

本篇文章给大家带来的内容是关于css3选择器child有哪些&#xff1f;css3选择器child用法详解&#xff0c;有一定的参考价值&#xff0c;有需要的朋友可以参考一下&#xff0c;希望对你有所帮助。对于CSS3的结构伪类选择器&#xff0c;为了更好地让刚刚学习CSS3教程的新手能够理…

内蒙古高考2021年成绩查询,内蒙古招生考试信息网:2021年内蒙古高考查分入口、查分系统...

【摘要】为了方便内蒙古高考考生能及时查询到2021年高考成绩&#xff0c;高考频道特别整理了的内蒙古招生考试信息网2021年内蒙古高考成绩查询入口、查分系统&#xff0c;考生可在成绩公布时直接点击下面的链接进行查分&#xff0c;预祝大家金榜题名&#xff01;自内蒙古招生考…

余数运算符在Java中用于Doubles

我在OSU任教已近两年了&#xff0c;这总是令我惊讶&#xff0c;我从学生那里学到了多少。 例如&#xff0c;过去&#xff0c; 我让学生写一些我不理解的奇怪代码 。 在这一点上&#xff0c;即使经过300多个博客文章&#xff0c; 几个YouTube视频 &#xff0c;甚至从100多种语言…

HATEOAS的RESTful服务。 记录超媒体API

1.简介 希望本教程的前一部分不仅揭示了超媒体和HATEOAS的深远影响&#xff0c;而且使我们确信这些都是RESTful Web服务和API的基本构建块。 在这一部分中&#xff0c;我们将继续侧重于文档方面&#xff0c;以解决如何预先传递Web服务或API功能的问题。 目录 1.简介 2. OpenA…

典型微型计算机控制系统的实例,微型计算机控制系统概述.ppt

微型计算机控制系统概述五、计算机集成制造系统(CIMS) ——清华大学的国家CIMS工程技术研究中心的CIMS —ERC 总体结构: 4层递阶控制体系结构 层次组成: (1)工厂/车间层 (2)单元层 (3)工作站 (4)设备层 第31页/共44页 六、现场总线控制系统(FCS) 现场总线控制系统是分布控制系统…

计算机科学与技术及应用,计算机科学与技术的应用及发展趋向

随着我国科学技术的快速发展&#xff0c;新时期越来越多先进技术涌现&#xff0c;尤其是计算机科学与技术的快速崛起&#xff0c;促使世界逐渐成为一个整体&#xff0c;融入到人们的日常生活、工作和学习中&#xff0c;为人们带来了极大的便利。计算机的快速普及和发展&#xf…

HelloWorld.java –打印Hello World的Java程序

Java Beginners的第一个示例程序用于打印Hello World。 1.简介 在本教程中&#xff0c;我们将学习如何在java中打印“ Hello World” 。 对于编程语言的初学者来说 &#xff0c;这被称为第一个Java程序。 如果您理解了该程序中的每个单词&#xff0c;那么您就可以开始学习Java…

避免常见的6种HTML5错误用法,如何避免常见的6种HTML5错误用法

一、不要使用section作为div的替代品人们在标签使用中最常见到的错误之一就是随意将HTML5的等价于——具体地说&#xff0c;就是直接用作替代品(用于样式)。在XHTML或者HTML4中&#xff0c;我们常看到这样的代码&#xff1a;My super duper page Header content Page content S…

java word批注_使用反射处理Java批注

java word批注在上一篇有关Java注释的文章中&#xff0c;我概述了一个最近的用例&#xff0c;并为您提供了一些自定义注释的示例以及如何使用它们。 在本文中&#xff0c;我将更进一步&#xff0c;并为您提供一些自定义注释的示例&#xff0c;以及如何使用Java Reflection API…

计生专干招聘计算机,城北村招聘计生专干试题

18、农村二女结扎户家庭一次发放发展资金&#xff3f;&#xff3f;&#xff3f;&#xff3f;元。二、单项选择题&#xff1a;(每题1分&#xff0c;共17分)1、请选出正确的晚婚年龄和晚育年龄。()A&#xff1a;男23岁&#xff0c;女25岁为晚婚&#xff0c;26周岁以后生育为晚育&…