idea运行Web项目时部署位置及部署到本地Tomcat
一、idea运行Web项目时部署的位置
某天在idea中运行web项目,把project部署到Tomcat中,运行后去Tomcat目录下看,根本找不到部署的项目,怎么肥事???
1. 项目Tomcat配置文件
经过了解后,在idea中部署项目到Tomcat,在运行时idea不会把项目放到Tomcat webapps目录下,而是复制一份足够的配置文件到 ${user.home}/.IntelliJIdea/system/tomcat 目录下:
也就是说每个项目都有属于自己的一份Tomcat配置,互不干扰。 每个项目的配置文件夹中都有一个 /conf/Catalina/localhost/ROOT.xml 文件,内容如下:
<Context path="" docBase="E:.K softidea-workspacessmssm_parentssm_web argetssm_web-1.0-SNAPSHOT" />
其中path是指在访问此项目时,是否需要添加额外的路径,如果为空,则直接使用域名或者ip就可以访问到该项目:127.0.0.1/localhost/域名
path值可以在idea中 Run/Debug Configurations 配置,配置后项目访问路径为 http://localhost:端口号/ssm
docBase是指要运行的项目的部署位置,E:.K softidea-workspace项目 就是我的项目源代码的位置,target是由maven构建后生成的,E:.K softidea-workspace项目 argetxxx-web-1.0 目录就是maven build完成后生成的,目录结构如下:
2. 项目运行过程
idea启动tomcat的命令为:Run / Debug
也就是说,整个项目运行过程为:首先maven build项目,将构建结果写到项目的target目录下,然后idea复制一份Tomcat的配置文件到${user.home}/.IntelliJIdea/system/tomcat 中,之后启动Tomcat安装目录下的catalina.bat文件,Tomcat读取配置文件,找到项目位置,然后就运行起来了。
maven build后默认输出路径(该项目的target目录):
二、idea部署Web项目到本地Tomcat
前言:不部署在Tomcat下,Web项目依然能正常启动;如果需要在本地Tomcat的webapps下存储和查看文件,就需要将web项目部署在本地Tomcat下。
1. Tomcat目录结构
2. 部署到 webapps 目录
打开Run/Debug Configurations,选择Deployment添加 war exploded,再点击铅笔头(修改)
war/war exploded区别:war exploded模式是直接把文件夹、jsp页面等等移到Tomcat 部署文件夹下面,进行加载部署。因此这种方式支持热部署,一般在开发的时候也是用这种方式。而选择war包启动,idea会将编译后的项目打成war包,然后tomcat会去解压war,启动速度会比war explode慢很多。
注意output directory(输出路径),默认是项目target下,需要修改为本地webapps下,如:E:apache-tomcat-8.5.11webappsssm
然后,此时只是确定项目编译输出路径为E:apache-tomcat-8.5.11webappsssm,还需要把项目放到输出路径里;在Available Elements?下选择项目,右键点击put into output root,重新启动即可。
3. 部署后的目录结构