【IDEA】Tomcat部署时选择war或war exploded的区别及注意点

1、war和war exploded的区别

(1)首先、需要了解war和war exploded的区别:

>> war包是自己打包生成的,如pom文件中war,则在项目build的构建的时候将打包成一个war包,默认是一个已经完成准备部署发布的项目包;

>> war exploded包是IDEA在工程创建的时候就自动生成的,是给开发者放在服务器上或本机调试用的,并不是一个已完成的准备发布的项目包。

 

(2)其次、在idea Tomcat部署时选择不同包的区别:

>> 区别1当我们在tomca的Deployment里面部署的是war包的话,就没有“Update classes and resources”,只有部署war exploded包的时候才会出现“Update classes and resources”。如下面图所示:

On Update Action是指当代码改变的时候,需要IDEA为你做什么,比如更新了静态资源或者java代码后对应的行为;
一般选择“Update classes and resources”
作用:run
运行模式下(jsp 立即生效,java 需要redeploy才可生效);debug调试模式下(java、jsp 都立即生效)

 

On frame deactivation是指失去焦点(比如你最小化了IDEA窗口),需要IDEA为你做什么。
一般选择Do nothing最好,官方也默认的是Do nothing
作用:
失去焦点的情况下 自动触发,而开发过程中 可能需要查询资料 或 与人聊天 或干其它事,IDE需要不停的失去焦点。每次失去焦点就自动触发 update ,CPU一下子 费很多,电脑瞬间变慢,所以没有必要这样。
 【IDEA】Tomcat部署时选择war或war exploded的区别及注意点_第1张图片

 

>> 区别2:两种情况下部署后项目的存放目录不同

1、war模式:将WEB工程以war包的形式上传到Tomcat服务器 ,存放于服务器的webapps目录下;
war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布;

2、war exploded模式:将WEB工程以当前文件夹的位置关系上传到服务器;也就是说不会再Tomcat服务器的webapps目录下。
war exploded模式这种可以称之为开发调试模式,默认是项目所在目录的target目录下,这也是笔者遇到的坑,尝试了好几次都没有在Tomcat的webapps下看我我部署的项目,但是明显我的项目已经可以启动访问了,一开始一直以为项目没有部署成功。

具体验证可通过获取上下文环境绝对路径来看:

String contextPath = request.getSession().getServletContext().getRealPath("/");

测试结果:

war包模式始终是获取到的路径为:C:\Program Files\apache-tomcat-7.0.82\webapps\assets
Tomcat所在位置

war exploded包模式获取到的路径为:C:\projects\sx_zc\asset_sx\target\assets
项目所在的target位置

 

总结:当我们在开发调试时建议选择war exploded包进行部署,正式上线时选择war包部署。

 

[url=【51自学网】-专业培训老师录制的视频教程,让学习变得很轻松[/url]

你可能感兴趣的:(Tool,服务器-Tomcat,idea,war&war,exploded)