首页 > 编程语言 >eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)

时间:2023-02-14 11:37:03浏览次数:33  
标签:xml 文件 java tomcat 项目 部署 eclipse maven

 

 

 

1.前言

  首先,本文创作灵感源于作者signheart,特此鸣谢!原文链接见文末推荐;

  百度都搜破了,全网讲的都是如何将maven项目部署到tomcat上,对于热部署的认知,真是令人汗颜!

  其次说说热部署的含义:

  热部署原来被定义为:tomcat启动后,如果你往webapps目录下,添加新的项目,tomcat会实现自动将其发布的功能,这时,就叫做热部署。

  网上所实现的热部署,也是这样:通过修改pom.xml,利用maven插件,运行tomcat7:run命令自动将maven项目进行打包,并发布到tomcat上。

  纯JavaWeb项目对热部署的定义为:修改Java文件和其它文件不需要重启tomcat,可以即时生效。

  本文将带你一步一步实现真正的热部署!

2.情景展示

  maven项目标准目录结构展示

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)_热部署

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

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)_热部署_02

  在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"可以看到);

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)_maven项目_03

  第三步: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标签体内添加

<  plugin >
< artifactId >maven-war-plugin
< configuration >
< webappDirectory >${project.basedir}/src/main/webapp
< warSourceDirectory >${project.basedir}/src/main/webapp

  改动二:更改class文件的编译位置

  在build标签体内添加

<  outputDirectory >${project.basedir}/src/main/webapp/WEB-INF/classes

  第三步:保存并更新maven项目(Alt+F5)

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)_后台开发工具_04

  选中项目-->右键-->Build Path-->Configuire Build Path

  class文件的输出位置已经变更至WEB-INF下(测试除外)

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)_tomcat_05

  第四步:修改server.xml

  Server工程-->打开要热部署项目所对应的tomcat的server.xml文件  

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)_热部署_06

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

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)_后台开发工具_07

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

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)_maven项目_08

  第六步:网页访问

eclipse mavenWeb项目真正实现热部署(修改java代码和页面文件不用重启tomcat)_热部署_09

    

写在最后

  哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!

作者:​​Marydon


标签:xml,文件,java,tomcat,项目,部署,eclipse,maven
From: https://blog.51cto.com/u_15964717/6056417

相关文章

  • Java中HashMap的entrySet()你会用了吗
    Map中存放的元素均为键值对,故每一个键值对必然存在一个映射关系。Map中采用Entry内部类来表示一个映射项,映射项包含Key和ValueMap.Entry里面包含getKey()和getValue()方法......
  • java 数组转list的两种方式(可新增和删除list元素)
     方式一String[]array={"111","222","333"};List<String>list=Arrays.asList(array);//list.add("444");list.remove(0);如上图所示,不可进行新增或删除元素的操......
  • Intellij idea 报错:Error : java 不支持发行版本5
    idea运行出现了这个错误 解决办法按下图所示:  ......
  • java 复制Map对象(深拷贝与浅拷贝)
    1.深拷贝与浅拷贝浅拷贝:只复制对象的引用,两个引用仍然指向同一个对象,在内存中占用同一块内存;被复制对象的所有变量都含有与原来的对象相同的值,而所有的对其他对象的......
  • 剑指 Offer 32 - III. 从上到下打印二叉树 III(java解题)
    目录1.题目2.解题思路3.数据类型功能函数总结4.java代码从上到下打印二叉树系列题目1.剑指Offer32-I.从上到下打印二叉树(java解题)2.剑指Offer32-II.从上......
  • Java中Class.forName和 ClassLoader.loadClass()区别
    一、类加载过程装载:通过累的全限定名获取二进制字节流,将二进制字节流转换成方法区中的运行时数据结构,在内存中生成Java.lang.class对象;  链接:执行下面的校验、准备和解......
  • java中的HashSet内部是如何工作的
    HashSet的内部采用HashMap来实现。由于Map需要key和value,所以HashSet中所有key的都有一个默认value。类似于HashMap,HashSet不允许重复的key,只允许有一个nullke......
  • javascript Date日期类
     四、Date日期类迁移时间:2017年5月27日18:43:02Author:Marydon(一)对日期进行格式化(日期转字符串)自定义Date日期类的format()格式化方法方式一:(非原创)//......
  • Java POI导出excel经典实现-交叉报表斜表头
    Java使用poi组件导出excel报表,能导出excel报表的还可以使用jxl组件,但jxl想对于poi功能有限,jxl应该不能载excel插入浮动层图片,poi能很好的实现输出excel各种功能,介绍poi导出e......
  • JMeter java模拟多用户高并发请求测试(json,form表单)
     1.情景展示在实际开发过程中,需要进行测试的时候,往往需要进行压力测试,或者高并发情况下,同时对一张表数据进行修改、读取操作,程序会不会出现多个用户取出的数据一致,或者......