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 ...
随机推荐
- wim2008 让FTP防火墙可用性配置
转: Win2003和Win2008防火墙导致FTP服务器不能访问的解决方法 这篇文章主要介绍了Win2003和Win2008防火墙导致FTP服务器不能访问的解决方法,需要的朋友可以参考下 由于通过远 ...
- vim粘贴代码的时候,恶心的缩进.
vim粘贴代码 如果有注释,那么粘贴后就惨不忍睹,类似于: 我粘贴代码到a.cpp,内容为: //打印函数 ) { ;i<length;i++){ ){ printf("0x &quo ...
- go语言之进阶篇 channel介绍
1.channel介绍 和map类似,channel也一个对应make创建的底层数据结构的引用. 当我们复制一个channel或用于函数参数传递时,我们只是拷贝了一个channel引用,因此调用者何被 ...
- Libnids(Library Network Intrusion Detection System) .
Libnids(Library Network Intrusion Detection System)是一个网络入侵检测开发的专业编程接口.它实现了基于网络的入侵检测系统的基本框架,并提供了一些基本的 ...
- ARouter 路由 组件 跳转 MD
目录 简介 支持的功能 典型应用 简单使用 进阶使用 更多功能 其他 Q&A Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs bai ...
- (转) Unity3D 使用Texturepacker打包工具制作NGUI(Atlas)图集
转自:http://www.unitymanual.com/thread-37485-1-1.html 由于NGUI AtlasMaker对打包的优化不好,容易打出很大的图集,很多部分都是浪费的,所有 ...
- 下周二推出“音视频技术WebRTC初探”公开课,欢迎捧场!
下周二推出"音视频技术WebRTC初探"公开课,欢迎捧场! 公开课课程链接:http://edu.csdn.net/huiyiCourse/detail/90 课程的解说资料 ...
- border-color: transparent rgb(255, 48, 48) transparent transparent;
border-color: transparent rgb(255, 48, 48) transparent transparent;
- CodeForces 569B Inventory 货物编号
原题: http://codeforces.com/contest/569/problem/B 题目: Inventory time limit per test1 second memory lim ...
- pycharm下设置自己的模板
在File---settings---File and Code Templates---Python script 脚本里添加: #!usr/bin/env python #-*- coding:u ...