eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)
1.前言
首先,本文创作灵感源于博客园园作者signheart,特此鸣谢!原文链接见文末推荐;
百度都搜破了,全网讲的都是如何将maven项目部署到tomcat上,对于热部署的认知,真是令人汗颜!
其次说说热部署的含义:
热部署原来被定义为:tomcat启动后,如果你往webapps目录下,添加新的项目,tomcat会实现自动将其发布的功能,这时,就叫做热部署。
网上所实现的热部署,也是这样:通过修改pom.xml,利用maven插件,运行tomcat7:run命令自动将maven项目进行打包,并发布到tomcat上。
纯JavaWeb项目对热部署的定义为:修改Java文件和其它文件不需要重启tomcat,可以即时生效。
本文将带你一步一步实现真正的热部署!
2.情景展示
maven项目标准目录结构展示

maven项目Java文件的默认编译位置

在eclipse中,MavenWeb项目如何实现热部署?
3.错误方式
手动修改maven项目的class文件的默认输出位置
第一步:将class文件的编译位置:demo_WebService2/target/classes,统一改为:demo_WebService2/src/main/webapp/WEB-INF/classes;
第二步:采用了"Default output folder"(选中"Allow output for source folders"可以看到);

第三步:Tomcat热部署访问:D:\WorkSpaces\eclipse2016\demo_WebService2\src\main\webapp;
虽然项目也可以正常启动并运行,但是这样的弊端有二:
其一,无法单独运行Java类,强制运行时,会报错:找不到或无法加载主类;
其二,不能更新maven项目,一但更新maven项目,就会导致class文件的默认位置还原为target/classes目录下。
什么时候需要更新maven项目?pom.xml更改后,必须更新,否则不生效。
4.解决方案
修改pom.xml改变修改maven项目的lass文件的默认输出位置。
改动一:更改maven默认的打包目录
在plugins标签体内添加
<!-- 更改maven默认的打包目录 -->
<plugin>
<artifactId>maven-war-plugin</artifactId>
<configuration>
<webappDirectory>${project.basedir}/src/main/webapp</webappDirectory>
<warSourceDirectory>${project.basedir}/src/main/webapp</warSourceDirectory>
</configuration>
</plugin>
改动二:更改class文件的编译位置
在build标签体内添加
<outputDirectory>${project.basedir}/src/main/webapp/WEB-INF/classes</outputDirectory>
第三步:保存并更新maven项目(Alt+F5)

选中项目-->右键-->Build Path-->Configuire Build Path
class文件的输出位置已经变更至WEB-INF下(测试除外)

第四步:修改server.xml
Server工程-->打开要热部署项目所对应的tomcat的server.xml文件

在Host标签体内添加Context标签,指定项目发布位置,及访问路径

第五步:以debug模式运行项目即可。

第六步:网页访问

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)的更多相关文章
- IntelliJ IDEA 热部署,修改java文件 不用重启tomcat
详情见大佬:https://www.cnblogs.com/chenweichu/articles/6838842.html
- 如何免费使用jrebel 和eclipse 项目配合完成热部署功能
天,感谢王同学分享了热部署插件,jrebel,说修改后台代码可以不用重启tomcat,于是立即下载使用....本来很简单的一个事情,因为参照了网上各种帖子,结果坑的不行....所以把自己的经验分享一下 ...
- eclipse 使用tomcat运行JavaWeb项目,文件修改后为何不用重启tomcat? (运行web项目的4种方式)探究
1.情景说明 在eclipse中,为什么Java文件修改后,重启tomcat class文件才能生效? 为什么jsp修改后,不需重启tomcat就能立即生效? 为什么静 ...
- Eclipse下JRebel6.5.0热部署插件安装、破解及配置
发现一个问题:如果安装了jRebel,但是并未对项目添加jRebel监听时,如果重写jar包中的类, 虽然重写后的类会得到编译(classes中的class已经是修改后的class),但是并不会调用重 ...
- 【图解】Eclipse下JRebel6.2.0热部署插件安装、破解及配置【转】
标签: 这两天在做后台管理系统,前端框架用Bootstrap,后端用SpringMVC+Velocity.在开发过程中,经常需要对界面进行微调,调整传参等,每次更改一次java代码,就得重新部署一次, ...
- SpringBoot实现热部署(修改class不需要重启)
热部署: devtools可以实现页面热部署(即页面修改后会立即生效, 这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实 ...
- 160614、Eclipse下JRebel6.2.0热部署插件安装、破解及配置
标签: 这两天在做后台管理系统,前端框架用Bootstrap,后端用SpringMVC+Velocity.在开发过程中,经常需要对界面进行微调,调整传参等,每次更改一次java代码,就得重新部署一次, ...
- 【图解】Eclipse下JRebel6.2.0热部署插件安装、破解及配置
这两天在做后台管理系统,前端框架用Bootstrap,后端用SpringMVC+Velocity.在开发过程中,经常需要对界面进行微调,调整传参等,每次更改一次java代码,就得重新部署一次,耗在各种 ...
- 热部署简介及在eclipse安装插件JRebel进行热部署
一.热部署简介 1.热部署与热加载在应用运行的时候升级软件,无需重新启动的方式有两种,热部署和热加载.它们之间的区别是:(1).部署方式: 热部署在服务器运行时重新部署项目.热加载在运行时重新加载cl ...
随机推荐
- HTML5 filesystem: 网址
FileSystem API 使用新的网址机制,(即 filesystem:),可用于填充 src 或 href 属性.例如,如果您要显示某幅图片且拥有相应的 fileEntry,您可以调用 toUR ...
- Java多线程之Callable接口与Runnable的实现以及选择
通过实现Runnable接口的实现 package Thread; import java.util.concurrent.ExecutorService;import java.util.concu ...
- 直方图与bin
1.bin的含义 直方图中bin的含义:计算颜色直方图需要将颜色空间划分为若干小的颜色区间,即直方图的bin,通过计算颜色在每个小区间内德像素得到颜色直方图,bin越多,直方图对颜色的分辨率越强,但增 ...
- java 小程序查看器 启动:未初始化小程序 解决方法
欢迎大家转载.为保留作者成果,转载请注明出处,http://blog.csdn.net/netluoriver,有些文件在资源中也能够下载.假设你没有积分.能够联系我索要! 在执行java程序的时候突 ...
- Python 的 Flask 框架安装应用
Flask是一个使用 Python 编写的轻量级 Web 应用框架.其 WSGI 工具箱採用 Werkzeug ,模板引擎则使用 Jinja2 ,使用 BSD 授权. Flask也被称为 " ...
- android自己定义换行居中CenterTextView
在我们开发app时,TextView一定是使用最多的控件了,android自带的TextView的功能也十分强大.但还是有些小的地方不能满足我们的需求.几天要说的这个功能也是开发中非经常见的.就是,在 ...
- SiteMapPath基本用法
1.添加一个网站地图项 Web.sitemap项 2.在 Web.sitemap项的写法如下: <?xml version="1.0" encoding="utf- ...
- linux命令学习——file
1.简介 file命令是用来检测并显示文件类型(determine file type).通过file指令,我们得以辨识该文件的类型,例如可以知道动态连接库是32位还是64位. 2.命令格式 file ...
- Hadoop:安装ftp over hdfs
https://blog.csdn.net/sptoor/article/details/11484855 https://blog.csdn.net/tengxing007/article/deta ...
- 转: wireshark过滤语法总结
from: http://blog.csdn.net/cumirror/article/details/7054496 wireshark过滤语法总结 原创 2011年12月09日 22:38:50 ...