作為初入程式設計一年多的萌新,道聽途說要閱讀各種開源架構的源碼。好吧,趁着頭發還在的時候多糾結下吧,好在卡殼的時候撓頭發的時候不那麼突兀。
進入今天的主題——Tomcat的源碼加載到IDEA中。
- 首先到Tomcat官網下載下傳源碼檔案
- 上圖示注的二進制檔案和源碼檔案都要下載下傳。
- 将源碼檔案解壓,解壓後的檔案夾為:apache-tomcat-8.5.35-src
- 将二進制檔案解壓到和apache-tomcat-8.5.35-src檔案夾同一級目錄,并修改檔案夾名為catalina-home
- 最後的目錄檔案如下圖所示:
- 我選擇的是使用maven的方法将Tomcat源碼導入到IDEA中,但是下載下傳的Tomcat源碼中并沒有pom.xml檔案,是以還需要在Tomcat源碼目錄下的根目錄建立pom.xml檔案:
<?xml version="1.0" encoding="utf-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>org.apache.tomcat</groupId> <artifactId>Tomcat8.5</artifactId> <name>Tomcat8.5</name> <version>8.5</version> <build> <finalName>Tomcat8.5</finalName> <sourceDirectory>java</sourceDirectory> <testSourceDirectory>test</testSourceDirectory> <resources> <resource> <directory>java</directory> </resource> </resources> <testResources> <testResource> <directory>test</directory> </testResource> </testResources> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.3</version> <configuration> <encoding>UTF-8</encoding> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.12</version> <scope>test</scope> </dependency> <dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> <version>3.4</version> </dependency> <dependency> <groupId>ant</groupId> <artifactId>ant</artifactId> <version>1.7.0</version> </dependency> <dependency> <groupId>wsdl4j</groupId> <artifactId>wsdl4j</artifactId> <version>1.6.2</version> </dependency> <dependency> <groupId>javax.xml</groupId> <artifactId>jaxrpc</artifactId> <version>1.1</version> </dependency> <dependency> <groupId>org.eclipse.jdt.core.compiler</groupId> <artifactId>ecj</artifactId> <version>4.5.1</version> </dependency> </dependencies> </project>
- pom.xml檔案中主要就是加了maven插件和Tomcat編譯運作時所需要的依賴。
- 下面就是将源碼檔案導入到IDEA中了
- 點選Import Project,選中 apache-tomcat-8.5.35-src 檔案夾,之後選中maven
- 然後Next到最後就可以了,記得選中jdk。
- 這樣Tomcat的源碼就導入到IDEA中了,稍等片刻,等待maven去下載下傳相關的jar包。下圖是Tomcat的導入後的源碼目錄結構
- 這個時候就該啟動下了
- 點選Edit Configurations配置啟動檔案。
- 具體的配置我就不贅述了,看圖即可
- 我們來分析下我圖上标注的東西到底是什麼?
- Name:啟動服務的名稱,可以随便填寫
- Main class:啟動的main方法所在的類,org.apache.catalina.startup.Bootstrap 這個路徑就是Tomcat啟動的主類,如果有不明白的,給你個 傳送門 自己體會下
- VM options:啟動程式的參數。這兒填寫具體路徑 -Dcatalina.home="/Users/mac/Desktop/source_code/catalina-home" ,雙引号裡面的路徑就是文章開局下載下傳的Tomcat二進制檔案解壓後的檔案路徑
- Working directory:調試的工作目錄。說白了就是Tomcat啟動時引用的源碼路徑。
- JRE選中自己安裝的
- 使用的module也用預設的
- 然後OK
- 接下來就是該啟動了吧,但是别高興的太早,會報錯的
- 提示沒有這個CookieFilter類,我一番查詢過後在GitHub上找到了這個東西,添加到 test/util 目錄下
- 然後再啟動一次,成功,完美。
- 最後就是打上斷點調試了,一步步檢視Tomcat的啟動方式,揭開神秘的面紗。撒花~~~