IDEA调试Tomcat源码方法

最近在扩充自己的java技术栈,浏览了网上的很多IDEA导入源码的教程,这里做一个详细的注意点总结

下载tomcat源码

https://tomcat.apache.org/download-80.cgi
下载tomcat 8.x版本,注意这里要选择Source Code Distributions下面的压缩文件,下载之后解压

新建pom文件

项目导入tomcat有两种方式,一种是采用ant进行编译,另外一种是选择通过maven导入,我这里选择采用第二种方式

在解压的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.0</artifactId>
    <name>Tomcat8.0</name>
    <version>8.0</version>

    <build>
        <finalName>Tomcat8.0</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>

创建catalina-home文件夹

和tomcat-8.5.5-sourcecode这个目录的上层目录上,建一个和该目录平行的目录catalina-home,将tomcat软件解压后,在解压的目录下,将以下目录拷贝到catalina-home中:

 bin
 conf
 lib
 logs
 temp
 webapps
 work

在本地的目录结构是这样的
在这里插入图片描述

配置IDEA

首先file->open 打开解压的Tomcat文件

然后在idea的右上角找到run这个按钮,旁边有Edit Configurations…这个选项,点击它。得到一个弹出框。

  • 在Man class:中填入,org.apache.catalina.startup.Bootstrap
  • 在VM options:中填入,你刚刚设置catalina-home路径,-Dcatalina.home="/Users/wangjunjie/catalina-home"

Working directory是默认的,不用管

Use class path of module里选择Tomcat8.0,这个和你在pom.xml中的配置有关JRE,我选择的是1.8
IDEA调试Tomcat源码方法_第1张图片

运行项目

保存刚刚的配置,点击运行或者手动找到BootStrap类手动执行,看到运行日志就OK了
IDEA调试Tomcat源码方法_第2张图片
如果你将test工程也包含在pom工程里,有可能你会启动失败,报错的类是:TestCookieFilter.java 报里面的CookieFilter.java类不存在,你可以选择注释,也可以选择实现该filter,我是注释掉的。

除此之外还可能出现java lang ClassNotFoundException listeners ContextListener一些不影响Tomcat启动的异常,这种情况将webapps下面的samples删掉即可

你可能感兴趣的:(java)