tomcat源码8.5.50编译 导入idea
本篇文章将说下如何将tomcat的8.5版本源码导入到idea中, 然后启动容器。
-
下载tomcat 8.5.50源码,可以去github下也可以去tomcat的官网下载src版本,我是从github下载,链接如下:
github: https://codeload.github.com/apache/tomcat/zip/8.5.50
官网: http://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.50/src/apache-tomcat-8.5.50-src.zip -
将下载下来的解压,将build.properties.default复制一份,重新命名为build.properties
截屏2019-12-23下午12.30.29.png
- 编辑build.properties,看下如下配置项:
base.path=${user.home}/tomcat-build-libs
这个配置是告诉tomcat将build时的依赖下到哪里,默认是如上路径,比如我的就没改这个配置,就放在了/Users/zihao/tomcat-build-libs下,按需配置,非必需
-
安装ant,可以下载二进制包https://mirrors.tuna.tsinghua.edu.cn/apache//ant/binaries/apache-ant-1.9.14-bin.zip
或者brew install ant -
执行如下命令
ant ide-intellij
备注: 如果下载了ant的二进制包,ant可以添加环境变量或者使用ant的绝对路径
可以打开build.xml文件,ant ide-intellij这个命令对应如下配置项目
<target name="ide-intellij"
depends="download-compile, extras-webservices-prepare, download-test-compile"
description="Creates project directory .idea for IntelliJ IDEA">
<copy todir="${tomcat.home}/.idea">
<fileset dir="${tomcat.home}/res/ide-support/idea"/>
</copy>
<echo>IntelliJ IDEA project directory created. Please create PATH VARIABLES for
ANT_HOME = ${ant.home}
TOMCAT_BUILD_LIBS = ${base.path}
</echo>
</target>
-
上一步执行完后,打开idea,直接打开这个项目, 内容大概是和下面那个图一样:
截屏2019-12-23下午12.16.44.png -
添加环境变量和依赖
-
添加环境变量
第一次打开的时候,idea会提示"Load error: undefined path variables",打开Preference,找到Path Variables,添加ANT_HOME和TOMCAT_BUILD_LIBS
截屏2019-12-23下午1.23.26.png -
添加依赖
打开project structure-->libraries,添加依赖,这些依赖可以在base.path找到,ant的lib需要自己额外下载下,直接去mvn repository下一个添加进来就好。
截屏2019-12-23下午1.27.00.png
-
侧边有个Ant, 一只蚂蚁的tab页,点击打开,添加build.xml位置
截屏2019-12-23下午12.18.43.png -
展开Tomcat 8.5,执行deploy任务
选中deploy,然后点击上面的绿色按钮执行。
截屏2019-12-23下午12.22.08.png
10.deploy执行完后,可以看到下载的tomcat源码目录下的output下添加了一个build文件夹,这个对应第10步中catalina.home的路径
截屏2019-12-23下午12.34.13.png
-
org.apache.catalina.startup.Bootstrap这个是tomcat的启动类,Vm.options添加如下运行配置
截屏2019-12-23下午12.24.21.png
Vm.options具体内容如下:
-Dfile.encoding=UTF8 -Dcatalina.home="/Users/zihao/Documents/code/Java/github/tomcat-8.5.50/output/build" -Duser.language=en -Duser.region=US
-Duser.language=en -Duser.region=US这两句话不加可能执行会乱码,可以去掉试下会不会乱码,😊
-
最后执行启动这个Bootstrap类,访问localhost:8080就有了那只🐱的界面
截屏2019-12-23下午12.26.39.png -
感谢如下链接:
https://www.shuzhiduo.com/A/pRdBP8XPJn/ 解决了我乱码问题
https://www.cnblogs.com/wasp520/archive/2012/07/01/2572223.html
解决了我启动时报SessionListener错误的问题