最近工作中需要修改Tomcat中一些不常用的配置,在网上很难找到资料,于是就萌生了读一下Tomcat源码的想法,关于Tomcat编译的博客,网上有很多,但是大部分都是执行不成功,所以就在这把这两天折腾的结果记录一下,省的下次再使用时忘记。
Tomcat源码下载
可以通过Tomcat下载地址下载Tomcat8.5.64版本的源码,如果需要其他版本,请自行去官网下载。
Tomcat源码编译之ant下载
Tomcat源码是使用ANT进行编译的,所以要编译Tomcat源码,就需要安装ant,ant下载地址,ant版本是1.9.15,Tomcat8.5.64版本要求ant版本最低是1.9.8,所以下载ant时请注意版本信息。关于ant的环境变量配置,版本信息查看等请自行百度查找。
Tomcat源码编译
以上工作都做好以后,下一步就是Tomcat的源码编译了。
Tomcat源码编译工作,首先需要将build.properties.default文件名修改为build.properties,然后修改其中的base.path的值,该值是使用ant编译源码时依赖的存储目录。
第二步就是使用cmd进入Tomcat源码目录,然后运行ant命令,该命令是用来下载Tomcat源码的依赖。执行成功以后,可以看到base.path目录下多了很多依赖,如果执行失败,可以多次重试该命令。
第三部是使用 ant ide-eclipse命令使源码可以导入eclipse中,执行成功以后会在Tomcat源码目录下看到 .classpath和 .project文件。
执行完以上步骤以后,Tomcat源码的编译工作就完成了,剩下的就是把源码导入进eclipse了。
将Tomcat源码导入eclipse
Tomcat源码编译完成以后,就可以将代码导入到eclipse中了,导入步骤 file-->import-->existing projects into workspace 然后选择你自己的源码目录就行了。当源码导入以后,工程会缺少jar包,然后工程左上角会有红色感叹号,然后点击项目,然后bulid path,就能看到缺少ANT_HOME和TOMCAT_LIBS_BASE下的jar包,其中ANT_HOME就是你的ant安装目录,而TOMCAT_LIBS_BASE就是编译Tomcat源码时依赖下载的目录。
然后就把需要使用的jar包全部导入了,然后再修改一下jdk版本为1.8就行了。tomcat源码导入以后,默认使用的是jdk1.7,所以还会报一个错误
把jdk版本换成1.8就能解决了,然后就可以运行了。
运行代码使用BootStrap中的main方法作为入口,然后就可以正常启动Tomcat源码了,如果启动日志中包含乱码,则可以在 Run As ---Run Configurations 中添加 -Duser.language=en
然后就可以愉快地查看和调试Tomcat源码了。