在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感觉没什么用

时间: 2024-10-24 07:56:24

在maven多模块结构中,并且使用overlay的情况下使用jetty热部署的相关文章

maven父子模块deploy 问题

1.问题描述:直接 deploy 子某块,但第三者确不能引用 jar(jar down不下来,但pom不报错) 原因:父子模块项目必须保证父模块pom deploy后,再 deploy 子模块才能被引用到,或者直接 deploy 父 pom 将整个项目模块deploy 2.问题描述:有两个项目:父项目:A,子项目:B 在A /pom.xml中: <groupId>com.dummy.bla</groupId> <artifactId>parent</artifac

eclipse tomcat maven热部署

1.  tomcat插件 如果是Kepler的话,已经自带了tomcat插件,如果没有,到http://www.eclipsetotale.com/tomcatPlugin.html下载安装或在线安装,这里就不多说了. 2.创建Server 打开servers view(window-->show view-->servers),在servers view中新建一个server,如下图所示: 点击next,选择tomcat的安装路径,如图所示: 点击Next,出现如图所示的界面: 其中左面Av

maven多模块项目,多web合并项目使用心得

Fixflow,做中国最好的开源流程引擎!项目地址https://github.com/fixteam/fixflow 此文章适合maven初学者或想接触maven的用户,讲的只是皮毛,高手请自觉略过. 最近一直在搞fixflow5.2的升级工作,以前只知道maven好用,但是一直没机会接触,这次由于工作需要,终于有空看下maven了. 由于以前项目使用linksource来管理项目结构,用tomcat来调试,习惯了,所以虽然决定用maven,但是还是习惯用tomcat来调试.所以就一直在网上搜

eclipse导入SVN上的Maven多模块项目

一.SVN上Maven多模块项目结构 使用eclipse导入SVN上的Maven多模块项目 Maven多模块项目所在SVN目录 二.eclipse通过SVN导入到工作空间 工作空间位于F:/HPCWorkspace 2.1 File->Import,选择从SVN检出项目下载 2.2 选择/新建SVN资源库位置 如果资源库还没创建好,选择创建新的资源库位置,如果已经创建好资源库了,那么选择使用现有的资源库位置下载 不存在的话新建 存在的话,选择已经存在的资源库  2.3 选择要从SVN检出的文件夹

Maven聚合模块与继承和Maven的生命周期

端碗吹水 Maven聚合模块: 因为Maven是提倡模块化编程的,所以会以多个工程分为多个模块.如果所有的功能.模块都写在一个工程里的话,不方便于扩展.升级.修改.查看和团队开发,而且也不方便于模块的复用. Maven则是提倡将一个项目拆分成多个工程,每个工程完成一个模块或功能,这些工程就像零件一般,分别去进行开发,分为多个工程也方便于维护和分工合作. 每个工程模块可以通过pom配置文件实现串联,例如配置好pom文件之后,A工程可以直接对B工程的代码进行调用,C工程可以对A和B工程的代码进行调用

第二章 Java框架整合--maven父子模块

2.1.maven父子模块 在实际开发中,我们基本都会用maven父子分模块的方式进行项目的开发. 2.2.实际操作 2.2.1.手工建立一个ssmm0的文件夹,并在该文件夹中加入一个pom.xml文件,该pom.xml文件内容如下: 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmln

基于tomcat插件的maven多模块工程热部署

内容属原创,转载请注明出处 写在前面的话 最近一直比较纠结,归根结底在于工程的模块化拆分.以前也干过这事,但是一直对以前的结果不满意,这会重操旧业,希望搞出个自己满意的结果. 之前有什么不满意的呢? 1. 基于maven拆分模块后,热部署的效果不好,经常出故障. 2. 对于多个子web工程,不能做到任意一个web工程都可以放到tomcat里运行,要在外面搞个壳子组合多个工程. 于是,有了这纠结的一周,也有了此文. 本文关于什么 如标题所言,本文涉及到如下几个内容: 1. maven多模块工程 2

spring+springmvc+hibernate架构、maven分模块开发例子小项目案例

maven分模块开发例子小项目案例 spring+springmvc+hibernate架构 以用户管理做测试,分dao,sevices,web层,分模块开发测试!因时间关系,只测查询成功,其他的准备在ext上做个完整的案例来的,可惜最近时间很紧, 高级部分也没做测试,比如建私服,其他常用插件测试之类的,等用时间了我做个完整ext前端和maven 完整的例子出来,在分享吧! 不过目前这些撑握了,在项目中做开发是没有问题的,其他高级部分是架构师所做的. 之前我有的资源都加上了积分,有些博友向我要,

Maven多模块项目管理小结

题记 最近刚完成一个用Maven构建的Web项目,看了一些Maven方面的书,比如<maven实战>,但还是对Maven多模块项目理解得不清晰,所以花了一点时间好好研究了下,现分享如下. 问题 下面是一个简略的项目结构图 Parent `------ childA(BusinessLayer)           `--- pom.xml `------ childB(WebLayer)          `--- pom.xml `------ pom.xml 1.Parent怎么能找到ch