Tomcat8.0.x源码解析(一)--搭建源码阅读环境

1、 到apache tomcat官网下载tomcat源码包http://tomcat.apache.org/,目前已经有了tomcat9,我下载的是apache-tomcat-8.0.33-src.zip,然后解压

2、 安装jdk1.7或更新版本
Tomcat-8.0.33源码目录下building.txt文件是对构建tomcat的说明,第一点要求就是安装jdk1.7+,我这里安装的是jdk8

3、 安装ant1.9.5或更新版本
Tomcat源码工程采用ant来进行项目的构建
building.txt第二个要求是安装ant1.9.5+,我这里安装的是ant1.9.6

4、 cmd下使用ant编译tomcat
ant

执行这个命令根据build.xml的配置将会tomcat源码编译,编译过程需要下载依赖包,在我的机器上,依赖包存储的路径为: C:\Users\jison\tomcat-build-libs

5、 cmd下将tomcat源码工程转换成eclipse工程
ant ide-eclipse

执行这个命令时出现了异常,如下图所示:



访问googlecode.com下载文件失败。
这时候一种办法是自备梯子翻()墙,继续执行ant ide-eclipse命令完成源码工程的转换。
另一种方法则不需要。将命令行里的信息拉上去可以看到尽管访问googlecode.com下载文件失败,但是tomcat所依赖的几个jar均已经下载到了C:\Users\jison\tomcat-build-libs目录下。
我们再看一下ant ide-eclipse调用的target将会调用build.xml对应的ide-eclipse的target,相关的xml配置文件片段如下:
  <target name="ide-eclipse"
          depends="download-compile, extras-webservices-prepare, download-test-compile"
          description="Prepares the source tree to be built in Eclipse">

    <!-- Copy the sample project files into the root directory -->
    <copy file="${tomcat.home}/res/ide-support/eclipse/eclipse.project" tofile="${tomcat.home}/.project"/>
    <copy file="${tomcat.home}/res/ide-support/eclipse/eclipse.classpath" tofile="${tomcat.home}/.classpath"/>

    <!-- Copy compiler settings file -->
    <mkdir dir="${tomcat.home}/.settings" />
    <copy file="${tomcat.home}/res/ide-support/eclipse/org.eclipse.jdt.core.prefs.properties" tofile="${tomcat.home}/.settings/org.eclipse.jdt.core.prefs"/>

    <echo>Eclipse project files created.
Read the Building page on the Apache Tomcat documentation site for details on how to configure your Eclipse workspace.</echo>
  </target>

可以看到这个命令调用的target仅仅是做了三件事(即处理eclipse项目所需要的几个配置文件):
1) 将tomcat源码目录下的/res/ide-support/eclipse/eclipse.project文件复制到tomcat源码根目录并重命名为.project文件
2) 将tomcat源码目录下的/res/ide-support/eclipse/eclipse.classpath文件复制到tomcat源码根目录并重命名为.classpath文件
3) 在tomcat源码根目录创建.settings文件夹。并将/res/ide-support/eclipse/org.eclipse.jdt.core.prefs.properties复制到.settings文件夹下
当然,这个ide-eclipse的target所以依赖的download-compile的下载依赖jar的target都没有执行完,所有以上说的三件事也就没有处理了。
我们现在要做的就是手动将上面三个操作执行完即可。
需要注意的是,”.”开头的文件夹和文件windows下是无法正常创建的,这里我使用了git-bash使用linux命令解决的。

6、 将tomcat源码导入eclipse
将tomcat源码转换成eclipse工程后,就可以使用Eclipse—》File—》Import—》Existing Projects into Workspace的方式导入项目了。

7、 处理tomcat依赖报错问题
导入eclipse后,会出现依赖包找不到的错误。缺少的依赖包如下:



将这五个依赖的路径remove,然后将这五个jar从别的地方找过来。
这五个jar包其中四个在ant命令下载路径C:\Users\jison\tomcat-build-libs里面有



还有一个ant.jar可以在我们ant安装目录下的lib目录下找到。
找到这五个jar包之后,在导入eclipse的tomcat源码工程下建一个lib目录,并将这五个jar复制到lib目录下,然后将其add to buildpath。
这时项目的报错就解决了



8、 运行tomcat源码工程
Tomcat的main启动方法在org.apache.catalina.startup. Bootstrap类下,启动时选择这个类的startup-tomcat选项即可,若是选择stop-tomcat则是关闭tomcat。这一点与平时使用时tomcat的startup.bat和shutdown.bats是一样的。



9、 浏览器访问http://localhost:8080
浏览器访问的结果如下,跟平时我们使用的tomcat效果是一样的:



10、下面提供可以直接导入eclipse的tomcat-8.0.x源码工程
链接:http://pan.baidu.com/s/1pL27GKz 密码:26bz

猜你喜欢

转载自jisonami.iteye.com/blog/2289800