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)的更多相关文章

  1. IntelliJ IDEA 热部署,修改java文件 不用重启tomcat

    详情见大佬:https://www.cnblogs.com/chenweichu/articles/6838842.html

  2. 如何免费使用jrebel 和eclipse 项目配合完成热部署功能

    天,感谢王同学分享了热部署插件,jrebel,说修改后台代码可以不用重启tomcat,于是立即下载使用....本来很简单的一个事情,因为参照了网上各种帖子,结果坑的不行....所以把自己的经验分享一下 ...

  3. eclipse 使用tomcat运行JavaWeb项目,文件修改后为何不用重启tomcat? (运行web项目的4种方式)探究

                    1.情景说明 在eclipse中,为什么Java文件修改后,重启tomcat class文件才能生效? 为什么jsp修改后,不需重启tomcat就能立即生效? 为什么静 ...

  4. Eclipse下JRebel6.5.0热部署插件安装、破解及配置

    发现一个问题:如果安装了jRebel,但是并未对项目添加jRebel监听时,如果重写jar包中的类, 虽然重写后的类会得到编译(classes中的class已经是修改后的class),但是并不会调用重 ...

  5. 【图解】Eclipse下JRebel6.2.0热部署插件安装、破解及配置【转】

    标签: 这两天在做后台管理系统,前端框架用Bootstrap,后端用SpringMVC+Velocity.在开发过程中,经常需要对界面进行微调,调整传参等,每次更改一次java代码,就得重新部署一次, ...

  6. SpringBoot实现热部署(修改class不需要重启)

    热部署: devtools可以实现页面热部署(即页面修改后会立即生效, 这个可以直接在application.properties文件中配置spring.thymeleaf.cache=false来实 ...

  7. 160614、Eclipse下JRebel6.2.0热部署插件安装、破解及配置

    标签: 这两天在做后台管理系统,前端框架用Bootstrap,后端用SpringMVC+Velocity.在开发过程中,经常需要对界面进行微调,调整传参等,每次更改一次java代码,就得重新部署一次, ...

  8. 【图解】Eclipse下JRebel6.2.0热部署插件安装、破解及配置

    这两天在做后台管理系统,前端框架用Bootstrap,后端用SpringMVC+Velocity.在开发过程中,经常需要对界面进行微调,调整传参等,每次更改一次java代码,就得重新部署一次,耗在各种 ...

  9. 热部署简介及在eclipse安装插件JRebel进行热部署

    一.热部署简介 1.热部署与热加载在应用运行的时候升级软件,无需重新启动的方式有两种,热部署和热加载.它们之间的区别是:(1).部署方式: 热部署在服务器运行时重新部署项目.热加载在运行时重新加载cl ...

随机推荐

  1. 概率校准与Brier分数

    1.再提逻辑回归 前面已经讲过了逻辑回归,这里不再细讲,只是简单的说一个函数,主要是方便大家更好的理解概率校准. 在逻辑回归中,用的最多的就是sigmod函数,这个函数的作用就是把无限大或者无限小的数 ...

  2. Spring框架中IoC(控制反转)的原理(转)

    原文链接:Spring框架中IoC(控制反转)的原理 一.IoC的基础知识以及原理: 1.IoC理论的背景:在采用面向对象方法设计的软件系统中,底层实现都是由N个对象组成的,所有的对象通过彼此的合作, ...

  3. Sql Server简单加密与解密 【转】

    前言: 在SQL Server 2005和SQL Server 2008之前.如果希望加密敏感数据,如财务信息.工资或身份证号,必须借助外部应用程序或算法.SQL Server 2005引入内建数据加 ...

  4. Qt解决:Qobject::connect queue arguments of type ‘xxxx’,Make sure ‘xxxx’ is registered using qRegister

    解决方法:在调用connect之前,通过 qRegisterMetaType() 注册你connect函数里对象的类型代码如下: typedef QString CustomString;//你自己定 ...

  5. cesium and three.js【转】

    https://blog.csdn.net/zhishiqu/article/details/79077883 这是威尔逊Muktar关于整合Three.js与铯的客人帖子.Three.js是一个轻量 ...

  6. 读书笔记,《Java8实战》第一章,为什么要关心 Java8

       开篇作者就提出,Java8所做的改变在许多方面比java历史上任何一次改变都深远.而且好消息是,这些改变会让你编辑程序来更容易,再也不用写类似类似于以前的swing中的事件处理函数的啰嗦代码了. ...

  7. impala 导出CSV 或excel

    1.介绍 impala-shell导入导出 参数说明: • -q query (--query=query) 从命令行执行查询,不进入impala-shell • -d default_db (--d ...

  8. (文档)流媒体资源 Streaming Assets

    Most assets in Unity are combined into the project when it is built. However, it is sometimes useful ...

  9. (转)Xen Server删除Local Storage

    1. First, you have to determine the Storage-Repository-UUID: xe sr-list -> write down / take note ...

  10. 解压版mysql的配置与使用

    1.在环境变量path中添加mysql的bin目录路径,例如 D:\Program Files\MySQL\mysql\bin 2.修改mysql目录下的my-default.ini文件 # 设置my ...