附上三篇有关文章:
- IntelliJ IDEA通过Tomcat启动项目过程分析
- IntelliJ IDEA通过Tomcat启动项目过程分析(开头加了一丢丢内容)
- IntelliJ使用指南—— 深入理解IntelliJ的Web部署逻辑
- IDEA中web项目在tomcat中的部署位置及修改
加上一段自己的扩展:
上面几篇文章把idea启动tomcat流程说的比较明白了,但是作为一个爱捯饬的娃,怎么可能不试试也这样启动呢?
前面的文章说了%CATALINA_BASE%
是tomcat的工作目录,其默认值为%CATALINA_HOME%
,即tomcat的安装目录。%CATALINA_BASE%
初始化过程为(catalina.bat):
if not "%CATALINA_BASE%" == "" goto gotBase
set "CATALINA_BASE=%CATALINA_HOME%"
:gotBase
%CATALINA_HOME%
,其初始化过程为:
set "CURRENT_DIR=%cd%"
if not "%CATALINA_HOME%" == "" goto gotHome
set "CATALINA_HOME=%CURRENT_DIR%"
if exist "%CATALINA_HOME%\bin\catalina.bat" goto okHome
cd ..
set "CATALINA_HOME=%cd%"
cd "%CURRENT_DIR%"
:gotHome
通过上面的初始化代码可以看出%CATALINA_HOME%
和%CATALINA_BASE%
要么从当前工作目录获取要么从环境变量获取,若不配置%CATALINA_HOME%
和%CATALINA_BASE%
环境变量那么其值就是tomcat安装目录。
由于idea的tomcat项目目录(${user_home}\.IntelliJIdea2019.3\system\tomcat
)下仅包含一些配置文件,不含bin等启动文件。因此可以想象其应该是通过设置临时环境变量(只在当前环境有效)实现的,沿着这个思路我们也来手动模拟一下idea启动tomcat的过程:
#命令行操作
#当前路径为tomcat安装路径或bin目录下
>set catalina_base=<输入idea的tomcat项目目录><\项目名称> #如 set catalina_base="C:\Users\yourcomputer\.IntelliJIdea2019.3\system\tomcat\Unnamed_web_test" (加引号能够避免路径含空格带来的问题)
>catalina.bat run
#打印结果
.....
.....
Using CATALINA_BASE: "C:\Users\yourcomputer\.IntelliJIdea2019.3\system\tomcat\Unnamed_web_test"
Using CATALINA_HOME: "C:\tomcat\apache-tomcat-7.0.94"
.....
.....
ojbk 😃