本文转自http://www.cnblogs.com/huang0925/p/3302487.html

---------------------------------------

通过Gradle我们可以很方便的使用内置jetty启动我们的web程序,在本地进行调试。但是在使用的过程中,我发现了几个问题,导致本地调试的效率大受影响。

  1. 如果使用gradle jettyRun启动jetty服务器后,项目里的静态资源(jsp,html,JavaScript文件)都被锁定了,导致无法实时修改这些静态资源。

  2. 既然无法实时修改这些静态资源,那意味着我们做一个很小的改动都需要先停止jetty server,然后修改,再重新启动jetty server,这样来回浪费很多时间,尤其是涉及前台页面改动时,每调整一个参数都需要重启jetty。

由于我以前使用过Maven,在Maven里jetty是可以显示热部署的。也就是说如果有静态文件被改动,那么jetty可以实时load并展现。那么在Gradle里面实现这个应该也不是难事,花了一些时间搞定了。

  • 首先要解决文件被锁定的问题。

文件被锁定是由于在使用windows系统时,jetty默认在内存中映射了这些文件,而windows会锁定内存映射的文件。解决的办法就是修改jetty的配置,让其在启动server时将useFileMappedBuffer标志位设置为false。

设置方法有两种,一种是修改webdefault.xml文件中的useFileMappdBuffer标志位。webdefault.xml文件是jetty启动服务的配置文件,其先于项目中的WEB-INF/web.xml文件被加载。 jetty包中默认有这个文件,可以将其提取出来,保存在项目根目录下,并修改useFileMappedBuffer节点。

 <param-name>useFileMappedBuffer</param-name>
<param-value>false</param-value>

然后在build.gradle加入对此文件的引用。

 [jettyRun, jettyRunWar,jettyStop]*.with {
webDefaultXml = file("${rootDir}/webdefault.xml")
}

第二种方法是修改项目中的WEB-INF/web.xml文件,在其中加入这个节点。

 <servlet>
<!-- Override init parameter to avoid nasty -->
<!-- file locking issue on windows. -->
<servlet-name>default</servlet-name>
<init-param>
<param-name>useFileMappedBuffer</param-name>
<param-value>false</param-value>
</init-param>
</servlet>
  • 解决jetty的hot deploy的问题。

这个就比较简单了,Gradle的jetty插件有两个属性,一个是reload属性,需要设置为automatic。另一个属性是 scanIntervalSeconds,这是指定jetty扫描文件改变的时间间隔,默认为0,单位是秒。 在build.gradle中加入设置。

 jettyRun {
reload ="automatic"
scanIntervalSeconds = 1
}

齐活。接下来运行gradle jettyRun,待服务启动起来以后,如果修改了静态资源,只需要按Ctrl+R刷新页面即可重新加载资源。

Gradle+Jetty实现静态资源的热部署的更多相关文章

  1. Gradle里配置jetty实现静态资源的热部署

    通过Gradle我们可以很方便的使用内置jetty启动我们的web程序,在本地进行调试.但是在使用的过程中,我发现了几个问题,导致本地调试的效率大受影响. 如果使用gradle jettyRun启动j ...

  2. 通过IIS共享文件夹来实现静态资源"本地分布式"部署

    以下以文件型数据库(如sqlite)为例 楼主话:以下内容,若有不专业处,大胆喷,虚心求教. 起因:要进行一个项目的分布式部署,而这个项目所涉及的其中一个数据库为sqlite(经测试,同为文件型数据库 ...

  3. SpringBoot2.0之七 实现页面和后台代码的热部署

    开发过程中我可能经常会因为修改一点点代码就需要重启项目而烦恼,这样不仅很繁琐,还会因为不断重启浪费大量的时间,无法提高工作效率.可是现在SpringBoot为我们提供了非常简单的方式让我们实现热部署. ...

  4. springboot热部署设置

    springboot提供了热部署,所谓热部署就是当你修改了文件代码,不用重新去启动服务器,而你只要重新build一下当前项目就可以重新编译了.而这就是热部署. 其实springboot热部署就是通过一 ...

  5. 用Jenkins+Gradle+Jetty实现持续集成、测试、部署

    自动集成有很多种方案,本例用到的工具是Jenkins(前身Hudson)+Gradle+Jetty,关于Gradle可参考上一篇,Gradle常见问题. 本例项目名称: WAP Jetty 安装Jen ...

  6. idea maven jetty插件热部署

    maven tomcat插件好像无法进行热部署,jetty可以如下配置实现热部署,但是idea无法进行自动编译,所以需要如下快捷键 Ctrl+Shift+F9,编译 Ctrl+F9,生成项目 < ...

  7. IDEA热部署(三)---jetty插件调试(转)

    我们在开发的时候习惯对于项目的框架进行分层,在idea中对于不同的层,我们使用module来进行划分,不同的module之间是通过maven来进行依赖的. 我们的项目结构是这样的,admin是我们的w ...

  8. 关于IDEA每次修改HTML,Css等静态资源文件都需要重启的设置修改

    ~ ~ ~ ~ ~ 关于IDEA每次修改HTML,Css等静态资源文件都需要重启的设置修改 最近开始使用IDEA进行项目开发,但是对于每次修改HTML文件中css和js文件之后都必须重启服务这件事表示 ...

  9. Spring Boot 修改静态资源一定要重启项目才会生效吗?未必!

    回顾热部署 Spring Boot 中的热部署相信大家都用过吧,只需要添加 spring-boot-devtools 依赖就可以轻松实现热部署.Spring Boot 中热部署最最关键的原理就是两个不 ...

随机推荐

  1. JS中简单的this学习

        我在学习JS初期,在使用this的时候经常出现问题,当然就是在现在,也有一些场景不能很好的明白this到底指代的是什么?看下面一个例子:   var x = 10; var foo = { x ...

  2. tabbar 嵌套 navigation

    -------------- 源代码:点击打开链接 ------------------------ AppDelegate.m - (BOOL)application:(UIApplication ...

  3. Linux如何生成列表

    如何生成列表: 方法一:{1..100} 方法二:`seq [起始数 [步进长度]] 结束数` 1,...,100 declare -i SUM=0    integer    -x

  4. Linux 块设备驱动 (二)

    linux下Ramdisk驱动 1 什么是Ramdisk Ramdisk是一种模拟磁盘,其数据实际上是存储在RAM中,它使用一部分内存空间来模拟出一个磁盘设备,并以块设备的方式来组织和访问这片内存.对 ...

  5. poj 1088 滑雪问题

    滑雪问题 import java.util.Scanner; public class Main{ static int a[][],r,c; public static void main(Stri ...

  6. CodeForces 158 B. Taxi(模拟)

    [题目链接]click here~~ [题目大意]n组团体去包车,每组团体的人数<=4,一辆车最多容纳4人,求所求车的数目最小 [解题思路]:思路见代码~~ // C #ifndef _GLIB ...

  7. Swift 全功能的绘图板开发

    要做一个全功能的绘图板,至少要支持以下这些功能: 支持铅笔绘图(画点) 支持画直线 支持一些简单的图形(矩形.圆形等) 做一个真正的橡皮擦 能设置画笔的粗细 能设置画笔的颜色 能设置背景色或者背景图 ...

  8. js简单排序

    简单的排序功能 HTML代码: <body> <input id="btn1" type="button" value="排序&qu ...

  9. NSData、NSString 、 NSFileManager

      1 NSData和NSMutableData的基本使用 1.1 问题 NSData类是IOS提供的用于以二进制的形式操作文件数据的类,NSData有两个常用的属性length和bytes,leng ...

  10. javaScript增加样式规则(新增样式)

    <html> <head> <link rel="stylesheet" type="text/css" href="b ...