准备
1:确认安装了ant,tomcat源码需要ant来构建
2:确认JDK是1.8,JDK版本太低,有可能不支持要构建的tomcat
下载
去官网https://tomcat.apache.org/download-80.cgi,选择要下载的版本,选择Source Code Distributions下载:
编译
1:解压下载的源文件,复制一份build.properties.default重命名为build.properties:
2:配置build.properties,在base.path后配置希望依赖包下载后保存的路径:
3:构建eclipse项目,在解压的目录下打开命令窗口,输入:ant ide-eclipse:
构建时会下载依赖,下载时间比较长,中间也有可能报错,多试几次,构建完成:
依赖也下载完成:
项目已经转成eclipse项目,可以直接导入到eclipse中:
导入
按照普通Java项目的导入方法把Tomcat源码导入,如下,由于依赖包路径问题,会报错:
切换到build path可以看到有两个变量ANT_HOME和TOMCAT_LIBS_BASE没有定义:
ANT_HOME:是本地安装的ant的根目录
TOMCAT_LIBS_BASE就是刚刚在build.properties中配置的base.path的值
现在分别建这两个变量:
新增ANT_HOME如下:
同理建TOMCAT_LIBS_BASE:
都保存后:
项目也不报错了:
验证
直接运行org.apache.catalina.startup.Bootstrap,报错:
五月 31, 2019 10:23:34 下午 org.apache.catalina.startup.Catalina load
警告: Unable to load server configuration from [D:\Workspaces\TestWorkspace\tomcat-8.5.x\output\build\conf\server.xml]
五月 31, 2019 10:23:35 下午 org.apache.catalina.startup.Catalina start
严重: Cannot start server. Server instance is not configured.
这是由于构建时默认把当前项目output\build目录做为了tomcat的根路径,可以在项目右击–》Run As–》Run Configurations可以看到:
在VM arguments 这里设置了Catalina.home的路径包含了/output/build,因为该目录是空的,所以删掉就可以了。
这时再运行,启动过程没有报错,并且访问http://localhost:8080/出现tomcat的首页,说明成功了: