IDEA 使用tomcat部署web项目时是怎么实现部署的

IDEA中使用tomcat部署项目遇到的问题:

1,tomcat中webapps目录下有原来的项目,但是实际使用中启动tomcat却没有看到这个项目启动。

2.这个目录下竟然没有当前正在开发准确说是正在tomcat上跑着的项目。。

最后发现IDEA其实是通过自己内置的tomcat配置文件设置虚拟路径实现部署的,完全不会对已经安装的tomcat设置有任何影响

首选说IDEA Artifacts选择要部署web应用时会有两个项,一个是war:exploded,另一个是war。

 

 

 第一个war:exploded 指的是热加载,开发中一般会用这个进行部署。因为更改文件后可以热部署刷新。

下面通过project的设置可以看到这个结构。其实这种形式部署时不会打成war包,如图,IDEA默认编译输出路径是在项目target目录下,然后通过配置虚拟路径方式实现部署。。所以就有了我上面提到的第二个问题,这种形式部署启动的话tomcat里面是找不到部署目录的。

不妨直接看一下是不是这样,这种方式部署的时候IDEA不会直接使用本地tomcat,而是为每个项目复制一套配置信息,如下图,Unnamed_EduProject_2这个目录下就包含了tomcat的配置信息,直接看conf\Catalina\localhost目录下,果然有一个名为edu_manager_war_exploded的xml文件,这个实现方式,class文件在磁盘路径上,而且配了虚拟路径,毫无疑问这就是正儿八经的tomcat使用虚拟路径部署的方式,文件内容为:

<Context path="/edu_manager_war_exploded" docBase="D:\DEV\EduProject\common-parent\edu-manager\target\edu-manager" />

所以war:exploded 热加载 的大概的过程就是通过内置的tomcat信息,采用虚拟路径部署的方式来实现这种方式IDE部署。除了跑起来的是我们安装的tomcat,其他配置跟本地的tomcat没有啥关系。。。。

第二个war形式 ,这个会就会把项目打成war包。

但是这种形式启动后会发现项目出现在我们自己的webapps下去了,第一反应就是IDEA把项目部署到了我们安装的tomcat,但是令人懵逼的是在IDEA的tomcat的conf\Catalina\localhost目录下仍然可以看到虚拟路径的设置。哇,这就看傻了。。。

<Context path="/edu_manager_war" docBase="D:\DEV\EduProject\common-parent\edu-manager\target\edu-manager.war" />

tomcat会加载webapps下的项目,然后加载虚拟路径配置的项目。

但是虚拟路径配置的如果是war包,那虚拟路径的配置其实不会部署项目,这个配置会以虚拟路径设置的名称作为解压后的名字把war包解压到webapps下然后就被tomcat加载了不会原磁盘位置直接解压。所以当我们选择这个进行部署的时候自然就能在目录下看到项目的目录了。

对了还有上面说的第一个问题,由于IDEA中项目部署配置是单独的配置,即使更改了Application也不用担心重读加载问题,因为IDEA的tomcat配置设置页面有一个选项如下,默认不勾选,不勾选的情况下<Host>下会有deployIgnore属性设置排除掉其他的项目,那么在加载webapps下的项目时会把本次部署之外的项目排除掉。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WannaRunning

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值