通过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节点。

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

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

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

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

1
2
3
4
5
6
7
8
9
<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中加入设置。

1
2
3
4
jettyRun {  reload ="automatic"
  scanIntervalSeconds = 1
}

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

Gradle里配置jetty实现静态资源的热部署相关推荐

  1. nginx配置访问本地静态资源

    nginx作为一款高性能的服务器,用途很多,除了可以做后端服务器的代理,负载均衡之外你,还有一个用途就是做静态资源的缓存服务器,比如在前后端分离的项目中,为了加速前端页面的响应速度,我们可以将前端的相 ...

  2. 配置nginx作为静态资源服务器 css,js,image等资源直接访问

    1.传统的web项目,一般都将静态资源存放在 webroot 的目录下,这样做很方便获取静态资源,但是如果说web项目很大,用户很多,静态资源也很多时,服务器的性能 或许就会很低下了.这种情况下一般都 ...

  3. Netlify静态资源托管之部署自动化

    关注「WeiyiGeek」公众号 将我设为「特别关注」,每天带你玩转网络安全运维.应用开发.物联网IOT学习! 0x00 基础介绍 0x01 Netlify 使用 0x00 基础介绍 Q: Netli ...

  4. Eclipse配置工程自动执行ant实现热部署

    思路:配置 Eclipse 自动执行一个Ant脚本,在Ant脚本内自己定义热部署的步骤,这样在每个文件更新后就可以自动部署到服务的目录中了. 一.配置Eclipse 工程自动执行一个Ant 脚本. 1 ...

  5. java 不重启部署_一篇文章带你搞定SpringBoot不重启项目实现修改静态资源

    一.通过配置文件控制静态资源的热部署 在配置文件 application.properties 中添加: #表示从这个默认不触发重启的目录中除去static目录 spring.devtools.res ...

  6. idea实现静态资源部署

    实现静态资源的热部署只需一下几步: 1.打开edit Configuration:如图 2.进入之后改成如图所示配置 3.进入Deployment,如图: 点击 ok使配置生效

  7. django 怎么加权限 静态资源目录_Django1.7如何配置静态资源访问

    Django是非常轻量级的Web框架,今天散仙来看下如何在Django中配置静态的资源访问路径,一个中等规模的网站,可能就会有很多静态的资源需要访问,无论是html,txt,还是压缩包,有时候访问这些 ...

  8. Django1.7如何配置静态资源访问

    Django是非常轻量级的Web框架,今天散仙来看下如何在Django中配置静态的资源访问路径,一个中等规模的网站,可能就会有很多静态的资源需要访问,无论是html,txt,还是压缩包,有时候访问这些 ...

  9. IDEA配置tomcat静态资源目录

    笔记:如何在IDEA中配置Tomcat的静态资源目录 先找到本地的Tomcat目录,(everything里搜索Tomcat) \ 打开tomcat目录,找到并进入conf目录 \ 需要修改两个文件s ...

  10. Spring MVC配置静态资源的正常访问

    SpringMVC如果过滤器过滤范围配置了/或者/*,那么框架会过滤所有请求,包括自己写的请求和静态资源请求,这样静态资源就不能正常加载,包括js文件.css文件.图片资源访问的时候都会出现404页面 ...

最新文章

  1. ie8加载js太慢_js ie8 慢
  2. 使用Github进行多人协作,项目管理
  3. 高级转录组分析和R语言数据可视化第十三期 (线上线下同时开课)
  4. python3.6.1安装教程-在Linux上安装Python3.6.1
  5. linux常用命令:sudo 命令
  6. Element UI——数字输入框解决方案
  7. leetcode 214 Shortest Palindrome
  8. 文件类的操作 File c# 1614823687
  9. PyTorch学习笔记——PyTorch简介
  10. Java 运行环境安装(JRE JDK 区别)
  11. 中国钢铁行业十四五形势展望与发展战略研究报告2022版
  12. 关于PC下安装MAC苹果系统!
  13. 微服务 细颗粒度的 soa
  14. 括号配对检测python123_括_括是什么意思_括字怎么读_括的含义_括字组词-新东方在线字典...
  15. Python:打包生成.pyc、.pyd文件
  16. 精读《X3D: Expanding Architectures for Efficient Video Recognition》论文
  17. php卡片式,卡片式设计的优点和不适用性
  18. 【无标题】PMP强化练习正确题一
  19. 【Java面试题】把数组排成最小的数
  20. nginx在Linux的安装和简单使用

热门文章

  1. Java编程基础阶段笔记 day03 Java基本语法(中)
  2. mysqldump导出数据
  3. 获取浏览器选中文本并操作
  4. c语言中如何通过二级指针来操作二维数组
  5. 6- vue django restful framework 打造生鲜超市 -完成商品列表页(下)
  6. 时尚服装行业挑战及软件机遇分享 -- 许鹏
  7. c# 字符串格式化为日期格式
  8. Bash递归函数计算斐波纳吉(fibonacci)数列
  9. Linux 终端操纵之扼要疾速指南(2)
  10. 两堆草前饿死的驴——选择永远是件痛苦的事