编译Tomcat 7源码,使用Myeclipse开发环境调试tomcat源码。
编译环境:
操作系统:Win 7 旗舰版
JDK:jdk 6
Tomcat:apache-tomcat-7.0.53
Myeclipse:myeclipse 10
Apache Ant:Ant 1.9.3
1 下载JDK6
编译Apache Tomcat源码需要JDK 6版本,所以系统首先需要安装JDK 6, JDK 6下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html
注意:安装完JDK 6之后,设置系统的环境变量JAVA_HOME 为JDK的安装目录。比如:C:\Program Files\Java\jdk1.6.0_12
2 安装Apache Ant 1.8.1或者更高版本
下载ant的地址:http://ant.apache.org/bindownload.cgi
以apache-ant-1.9.3-bin.zip为例,解压压缩包到一个方便的目录,目录的名称为apache-ant-1.9.3,解压之后如下图:
注意:解压完成之后,创建环境变量ANT_HOME,设置该变量的值为E:\software\apache-ant-1.9.3
修改环境变量PATH,并设置为E:\software\apache-ant-1.9.3\bin,这样编译源码的时候,系统才能找到ant的命令。
3 下载tomcat7源码包
下载地址:http://tomcat.apache.org/download-70.cgi
下载完成之后解压,解压到myeclipse的工作空间下。
Workspaces10-apache-tomcat-7.0.53目录为我的myeclipse的工作空间目录。
4 编译Tomcat源码
编译tomcat源码成为myeclipse的一个java工程,方便在myeclipse中进行代码调试。
在tomcat的源码目录下创建libs目录,该目录用于存放所有依赖包。
在tomcat的源码目录下修改配置文件build.properties.default的文件名称为build.properties,打开build.properties,修改配置项base.path的值为E:/Workspaces10-apache-tomcat-7.0.53/apache-tomcat-7.0.53-src/libs。
在cmd命令行中使用如下命令进入到tomcat源码目录,
cd E:\Workspaces10-apache-tomcat-7.0.53\apache-tomcat-7.0.53-src
执行以下命令,会自动下载依赖的jar包,并存放在libs目录中,同时编译tomcat源码,并复制res/ide-support/eclipse目录下myeclipse工程需要的文件到源码根目录下。
ant ide-eclipse
注意:使用该命令时,需要连接互联网,ant会下载依赖的jar包文件。
编译完成之后,终端会给出如下的提示信息,说明编译成功。
BUILD SUCCESSFUL
Total time: 26 seconds
一个可用的tomcat被编译到根目录下的/output/build目录下,此时就可以使用一般的脚本来启动和停止tomcat。
5 Myeclipse调试源码
开启myeclipse 10并让E:\Workspaces10-apache-tomcat-7.0.53目录作为其工作空间。
打开myeclipse的Preferences对话框,选择Java->Build Path->Classpath Variables,添加两个新的Classpath Variables,TOMCAT_LIBS_BASE和ANT_HOME。
TOMCAT_LIBS_BASE的值为libs目录所在的路径,和在build.properties文件中的base.path配置项相同,E:/Workspaces10-apache-tomcat-7.0.53/apache-tomcat-7.0.53-src/libs。
ANT_HOME设置为ant的根目录,即E:/software/apache-ant-1.9.3
使用File->Import并选择Existing Projects into Workspace,在弹出对话框中选择tomcat源码根目录,完成导入tomcat工程到myeclipse中。
源码目录下的res/ide-support/eclipse目录中,提供了两个文件start-tomcat.launch、stop-tomcat.launch,在myeclipse中可以用于启动和停止tomcat,比如拷贝一份start-tomcat.launch至工程的根目录下,
修改文件中的tomcat-7.0.x为apache-tomcat-7.0.53-src,
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<launchConfiguration type="org.eclipse.jdt.launching.localJavaApplication">
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_PATHS">
<listEntry value="/apache-tomcat-7.0.53-src/java/org/apache/catalina/startup/Bootstrap.java"/>
</listAttribute>
<listAttribute key="org.eclipse.debug.core.MAPPED_RESOURCE_TYPES">
<listEntry value="1"/>
</listAttribute>
<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.apache.catalina.startup.Bootstrap"/>
<stringAttribute key="org.eclipse.jdt.launching.PROGRAM_ARGUMENTS" value="start"/>
<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="apache-tomcat-7.0.53-src"/>
<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Dcatalina.home=${project_loc:/apache-tomcat-7.0.53-src/java/org/apache/catalina/startup/Bootstrap.java}/output/build"/>
</launchConfiguration>
选中文件运行,
也可以使用tomcat的主类org.apache.catalina.startup.Bootstrap启动tomcat,
官网文档:
http://tomcat.apache.org/tomcat-7.0-doc/building.html