作为初入编程一年多的萌新,道听途说要阅读各种开源框架的源码。好吧,趁着头发还在的时候多纠结下吧,好在卡壳的时候挠头发的时候不那么突兀。
进入今天的主题——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的启动方式,揭开神秘的面纱。撒花~~~