編譯Tomcat7.0原始碼
編譯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
注意:安裝完JDK 6之後,設定系統的環境變數JAVA_HOME 為JDK的安裝目錄。比如:C:\Program Files\Java\jdk1.6.0_12
2 安裝Apache Ant 1.8.1或者更高版本
以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原始碼包
下載完成之後解壓,解壓到myeclipse的工作空間下。
Workspaces10-apache-tomcat-7.0.53目錄為我的
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