1. 下载tomcat源码: git clone https://github.com/apache/tomcat ,tomcat版本是9
2. 本地需要有ant服务, 且版本要求大于 1.9.5
3. 直接编译
cd ${tomcat.source}
ant
4. 编译成eclipse工程
mv build.properties.default build.properties
cd ${tomcat.source}
ant ide-eclipse
执行 ant ide-eclipse 会报错:
产生这个错误的原因是编译tomcat时需要从 sourceforge.net 下载依赖包,协议用的是http,但是 sourceforge 目前已经改成了https 所以导致下载失败,提示是没有证书解决方案:(1)通过浏览器手动下载(2)在本地搭建apache或者nginx等web服务,将(1)中手动下载的包放到web服务器下(3)修改build.properties 中相应key的value, 如[get] Error getting http://downloads.sourceforge.net/cglib/cglib-nodep-2.2.3.jar to /Users/mengxiansen/tomcat-build-libs/download-1519080988.tmp tomcat/build.xml:2784: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
#cglib.loc=${base-sf.loc}/cglib/cglib-nodep-${cglib.version}.jar cglib.loc=http://localhost/cglib-nodep-2.2.3.jar
需要手动下载的有
http://downloads.sourceforge.net/easymock/easymock-3.2.zip http://downloads.sourceforge.net/cglib/cglib-nodep-2.2.3.jar
5. 打开eclipse 新建一个workspace
打开Preferences 在 Java->Build Path->Classpath Variables 中新增两个环境变量
TOMCAT_LIBS_BASE 和 ANT_HOME
TOMCAT_LIBS_BASE 配置 build.properties 中的 base.path 的值,默认是 ${user.home}/tomcat-build-libs 这个目录下存储的是第4步执行 ant ide-eclipse 时候下载的依赖包
ANT_HOME 配置成第2步安装ant的目录即可
6. 导入项目
打开 File->Import 选择 Existing Projects into Workspace 将tomcat导入
7. 查看 Run->Run Configurations->Java Application
可以看到 start-tomcat 和 stop-tomcat已经导入
查看 Arguments->VM arguments 将改为-Dcatalina.home=${project_loc:/tomcat-9.0.x/java/org/apache/catalina/startup/Bootstrap.java}/output/build
-Dcatalina.home=${project_loc:/tomcat-9.0.x/java/org/apache/catalina/startup/Bootstrap.java}
去掉output/build
8. 启动tomcat
找到 org.apache.catalina.startup.Bootstrap 类,并运行
看到信息
“信息: Server startup in 982 ms”
证明启动成功