记录-Intellij Idea下以Tomcat运行Web项目时的位置问题

时间:2021-05-29 16:37:20

今天本来准备把原来的一个Web项目导入到Idea下,之前这个项目是用eclipse写的,容器用的tomcat,首先导入前我把一些没用的配置文件都给删了,像什么.eclipse、.setting什么的,然后值留了src和WebContent,直接以源码文件导入到Idea下,然后配置一下tomcat什么的,这一切都没有什么问题,直到我配置完tomcat启动,下意识去看了一下Tomcat的Webapps目录,发现里面根本没有我的项目,这一下让我摸不着头脑。

后来百度了一下,发现其实idea中配置tomcat,运行的时候其实不会把项目放到自己的webapps目录下,而是放到了

{$user.home}/Library/Caches/IntelliJIdea2019.1/tomcat下对应的项目下。

记录-Intellij Idea下以Tomcat运行Web项目时的位置问题

其中IntelliJIdea2019.1是对应的idea的版本,在{$user.home}/Library/Caches目录下一共有3个版本的idea,其他两个是我以前用过的,这就很清晰了。

记录-Intellij Idea下以Tomcat运行Web项目时的位置问题

进入IntelliJIdea2019.1目录下的tomcat目录,发现里面就是刚刚部署到tomcat的项目 alipay,名称是通过我们的项目名转化而来,并且每个项目都有属于自己的一份tomcat配置,互不干扰。

记录-Intellij Idea下以Tomcat运行Web项目时的位置问题

进入这个项目目录下,主要主要conf、logs和work目录,conf里面主要是配置文件,logs是日志信息,在自己的tomcat目录下是看不到项目的日志的

记录-Intellij Idea下以Tomcat运行Web项目时的位置问题

另外就是每个项目的配置文件夹中有一个 /conf/Catalina/localhost/ROOT.xml 文件,内容如下:

记录-Intellij Idea下以Tomcat运行Web项目时的位置问题

其中Context path对应的是idea中tomcat配置的Application context,如果是tomcat中配置的是"/",那么文件的名字就叫ROOT.xml并且Context path="",访问的时候直接ip+端口即可访问到项目,但是如果tomcat中配置了,那么该文件的名字就变成了你配置的参数的名字,并且文件中的Context path与配置的参数相对应。

记录-Intellij Idea下以Tomcat运行Web项目时的位置问题

那么tomcat的server配置中的URL访问地址也会自动帮你加上这个名称

记录-Intellij Idea下以Tomcat运行Web项目时的位置问题

并且/conf/Catalina/localhost/ROOT.xml 文件名与文件中的Context path参数也会与你配置的Application context保持一致

记录-Intellij Idea下以Tomcat运行Web项目时的位置问题

其中的另一个参数docBase是指要运行的项目的部署位置,这个位置是可以指定的

记录-Intellij Idea下以Tomcat运行Web项目时的位置问题

整个项目运行过程是:先将项目进行build编译,将编译后的文件放到指定位置,然后idea复制一份tomcat的conf、logs和work文件夹到${user.home}/.IntelliJIdea/system/tomcat 中,之后启动tomcat安装目录下的catalina.sh文件,tomcat读取配置文件,找到项目位置,然后就运行起来了。

能够解决这个问题也是参考了一个大神的博客,在这里也十分的感谢,并附上原文链接:https://blog.csdn.net/Victor_Cindy1/article/details/72680553

结束:要善于发现问题并解决问题,经常问自己为什么,这是一个好习惯,我会继续保持,加油!