zoukankan      html  css  js  c++  java
  • 在maven多模块结构中,并且使用overlay的情况下使用jetty热部署

    在使用maven多模块的结构的时候,同时有多个web工程使用maven-war-plugin的overlay来组织的时候,本地开发时如何在eclipse里面启动容器并且可以热部署调试是个比较麻烦的问题,之前一直使用maven-tomcat-plugin,

    不可否认tomcat是最快的,而且也是最方便的,但是有一个问题一直无解,就是overlay支持不好,比如webA有一个a.jsp,webB有一个b.jsp,如果在webB依赖webA,使用overlay打包没有问题,可以把a.jsp和b.jsp全部打到war包里面,但是用tomcat运行webB的时候,a.jsp访问不到。这非常的不方便。tomcat的好处是,修改jsp直接生效,修改类文件会自动重新热部署,比较快。

    使用jetty能解决overlay的问题,但是jetty的缺点是启动慢,因为每一次热部署都会在target/tmp下重新部署一份,如果你jar比较多,拷贝就要一定的时间。

    但是jetty能很好的支持overlay,下面介绍一下使用jetty配置的几种情况

    普通运行模式:
    1. 配置手动reload
    <scanTargets>

       <scanTarget>../childModule/target/classes</scanTarget>

    </scanTargets>

    <scanIntervalSeconds>0</scanIntervalSeconds>

    <reload>manual</reload>

    这样配置后每次修改完需要手动输入reload,然后jetty会重新部署

    如果修改了childModule里面的类,你会发现不起作用,需要install一下,再reload就起作用了。

    2. 配置自动reload
    <scanTargets>

      <scanTarget>../childModule/target/classes</scanTarget>

    </scanTargets>
    <scanIntervalSeconds>5</scanIntervalSeconds>

    这样每次修改childModule里面的类,会自动reload,但是你会发现修改还是不起作用,仍然需要install一下childModule.

    3. 配置手动reload, 不配置scanTargets
    <scanIntervalSeconds>0</scanIntervalSeconds>
    <reload>manual</reload>
    这样每次修改childModule后,手动install一下,再reload一下,也是一样起作用的

    3. 无论怎么配置,如果是修改web工程下的类或者jsp,会马上起作用。

    Debug模式:
    1. 配置手动reload
    修改类文件后马上生效,不需reload,如果reload了反而不生效,如果是overlay的web工程里面的jsp,则不行,一定要重新install+reload

    2. 配置自动reload
    修改类文件后会reload,修改不会生效,需要install后再reload才生效,可能是因为reload后又等于是重新加载了jar包,而jar包还是旧的

    总结:开发时使用debug模式,或者普通模式+手动reload最好,scanTargets感觉没什么用

  • 相关阅读:
    win10安装virtualBox创建CentOS6.5虚拟机
    ES系列二、CentOS7安装ES head6.3.1
    ES系列一、CentOS7安装ES 6.3.1、集成IK分词器
    Python easyGUI 猜数字
    Python easyGUI 登录框 非空验证
    Python easyGUI 文件浏览 显示文件内容
    Python easyGUI 文件对比 覆盖保存
    Python 统计代码量
    什么是一个人真正的魅力?
    Python学习笔记(15)- osos.path 操作文件
  • 原文地址:https://www.cnblogs.com/firejava/p/6269138.html
Copyright © 2011-2022 走看看