1. 程式人生 > >MacBook搭建Tomcat8原始碼閱讀環境 Idea+Maven

MacBook搭建Tomcat8原始碼閱讀環境 Idea+Maven

MacBook搭建Tomcat8原始碼閱讀環境

準備工作

原始碼目錄配置

1、新建catalina-home目錄,把xxx-src目錄裡的conf等目錄複製到當前目錄,沒有的目錄自己新建空目錄。在這裡插入圖片描述
2、新建pom.xml並配置

<?xml version="1.0" encoding="UTF-8"?>
<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.0.2</version>    

            <configuration>    
                <encoding>UTF-8</encoding>    
                <source>1.8</source>    
                <target>1.8</target>    
            </configuration>    
        </plugin>    
    </plugins>    
</build>    

<dependencies>  
    <dependency>  
        <groupId>org.easymock</groupId>  
        <artifactId>easymock</artifactId>  
        <version>3.5</version>  
        <scope>test</scope>  
    </dependency>  

    <dependency>    
        <groupId>junit</groupId>    
        <artifactId>junit</artifactId>    
        <version>4.12</version>  
        <scope>test</scope>    
    </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.6.1</version>  
    </dependency>    
</dependencies>    

匯入idea

File->Open->pom.xml
等待maven下載完成依賴jar包後,原始碼目錄就可以正常顯示了。

配置並執行

1、idea中開啟apache-tomcat-8.0.53-src目錄,定位到java目錄,右鍵
Mark Directory as->Sources Root

2、配置啟動入口類等資訊
Main class設定為

org.apache.catalina.startup.Bootstrap

新增VM options

-Dcatalina.home=catalina-home 

-Dcatalina.base=catalina-home 

-Djava.endorsed.dirs=catalina-home/endorsed 

-Djava.io.tmpdir=catalina-home/temp 

-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager 

-Djava.util.logging.config.file=catalina-home/conf/logging.properties

配置效果:
在這裡插入圖片描述

點選執行按鈕:這裡可以看到已經啟動成功
在這裡插入圖片描述

但是訪問localhost:8080報錯:
在這裡插入圖片描述

原因是直接啟動org.apache.catalina.startup.Bootstrap的時候沒有載入org.apache.jasper.servlet.JasperInitializer,從而無法編譯JSP。解決辦法是在tomcat的原始碼org.apache.catalina.startup.ContextConfig中手動將JSP解析器初始化:

context.addServletContainerInitializer(new JasperInitializer(), null);

如下:
在這裡插入圖片描述