首先
提一个大家都常见,却都不是很知晓的问题。就是war和war exploded的区别是什么?
1.war模式:将WEB 工程以包的形式上传到服务器;
2.war exploded模式: 将WEB 工程以当前文件夹的位置关系上传到服务器;
也就是说:
1)war模式这种可以称之为是发布模式,看名字也知道,这是先打成war包,再发布。
2)war exploded模式是直接把文件夹、jsp页面 、classes等等移到Tomcat 部署文件夹里面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。
3)在平时开发的时候,使用热部署的话,应该对Tomcat进行相应的设置,这样的话修改的jsp界面什么的东西才可以及时的显示出来。
第一种war形式
我们设置好war包形式,然后运行tomcat
第二种war exploded形式
再以war exploded的形式运行tomcat
结论我们发现两种形式,都没有在tomcat下的wabapps下发现war包。
这也就是我要提的小秘密,也可能只有我自己认为是个小秘密,哈哈然后我就思考,为什么会出现这样的问题,使用tomcat配置了呀,运行的war包怎么没有部署在tomcat下。有点违背最初使用eclipse的时候的套路呀!
经过调查:发现在idea中配置的tomcat,在运行时idea不会把项目放到自己的webapps路径下,而是在${user.home}/.IntelliJIdea/system/tomcat 目录下。
比如我的是在:C:\Users\georgedage.IntelliJIdea2018.3\system\tomcat\Unnamed_epidemic_management_system
docBase是指要运行的项目的部署位置,D:\java\IDEAWorkSpace\项目 就是项目源代码的位置,target是由maven构建后生成的.
所以最终的解惑就在于:
1.首先Intellij会为每个web项目建立一个单独的文件夹,以“Unnamed_项目名”命名(可在.idea/workspace.xml中修改)。
2.在每次启动项目时,它先将tomcat目录下原始的CATALINA_BASE目录拷贝一份到该目录下,也就是将当前tomcat的配置文件拷贝到“Unnamed_项目名”文件夹下。 _
3.然后将CATALINA_BASE的路径修改为该目录的路径,再在 Unnamed项目名/conf/Catalina/localhost下添加项目的配置文件ROOT.xml。
4.最后启动tomcat,tomcat除了会启动webapps下应用外还会加载/conf/Catalina/localhost下配置的应用,而Intellij就是通过这种方式“隐蔽”地加载web项目。