IDEA 部署web项目遇到的疑问
情景是这样的,由于之前使用STS开发项目,后来自己切换了IDEA,但是tomcat一直用的是同一个。今天项目热加载有点问题,就想看一下tomcat的部署目录,结果一看傻眼了。。。
1,tomcat中webapps目录下还保留有原来的项目,但是实际使用中启动tomcat却没有看到这个项目启动。
2.这个目录下竟然没有当前正在开发准确说是正在tomcat上跑着的项目。。
于是找了一番资料,搞明白了原因:
IDEA Artifacts选择要部署的项目时,war应用会有两个项,一个是war:exploded,另一个是war
第一个war:exploded 指的是热加载,开发中一般会用这个进行部署。因为更改文件后可以热部署刷新,下面通过project的设置可以看到这个结构。其实这种形式部署时是不会打成war包的,默认编译路径是在项目target目录下,猜测是通过配置虚拟路径方式实现部署。。所以就有了我上面提到的第二个问题,这种形式部署启动的话tomcat里面是找不到部署目录的。
第二个war形式 ,这个会就会把项目打成war包,所以也会把war部署到tomcat的webapps目录下去启动,当我们择这个进行部署的时候自然就能在目录下看到项目的目录了。
对了还有上面说的第一个问题,IDEA中项目部署启动后,虽然tomcat实例下的webapps中保留有原来的项目却不会随当前项目一起运行,其实IDEA中启动的项目不是直接使用tomcat实例,部署原理可能是类似于虚拟路径部署方式,进而IDEA的tomcat配置设置页面有一个选项如下,
deploy applicantions configgured intomcat instance 意为部署已经在Tomcat实例中的应用程序配置,默认是不勾选这个选项的,所以原有的项目并不会随之一起部署,不仅如此,tomcat中的相关配置也不会生效,可以理解为这个选项表示当前的部署会不会与原有tomcat的配置同步,如果不勾选,就是独立的新的tomcat环境,跟原有的没有任何关系。