idea+maven搭建tomcat8.0源碼環境


使用的idea版本2017maven3.5(如果maven版本高於3.5那么可能會存在導入maven項目的時候出錯,這是由於idea版本過低的緣故)、jdk1.8tomcat源碼8.5

1、准備jdk環境

2、准備maven環境

3、准備idea環境

4、下載tomcat源碼

官網下載地址: http://tomcat.apache.org/

瀏覽器打開地址后左側download下選擇相應的下載版本進入如下界面:

 

 

 可以選擇源碼包進行下載。

Github下載地址:https://github.com/apache/tomcat/tree/master

5、導入項目前的准備工作

將下載下來的源碼項目解壓,在解壓后的根目錄下新建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</artifactId>
    <name>Tomcat8</name>
    <version>8</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>
        <!--easymock用於模擬HttpServletRequest對象從而使測試順利進行-->
        <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>
        <!--解析WSDL文件-->
        <dependency>
            <groupId>wsdl4j</groupId>
            <artifactId>wsdl4j</artifactId>
            <version>1.6.2</version>
        </dependency>
        <!--添加jaxrpc依賴-->
        <dependency>
            <groupId>javax.xml</groupId>
            <artifactId>jaxrpc</artifactId>
            <version>1.1</version>
        </dependency>
        <!--jsp編譯器依賴-->
        <dependency>
            <groupId>org.eclipse.jdt.core.compiler</groupId>
            <artifactId>ecj</artifactId>
            <version>4.5.1</version>
        </dependency>
        <!--添加soap依賴-->
        <dependency>
            <groupId>javax.xml.soap</groupId>
            <artifactId>javax.xml.soap-api</artifactId>
            <version>1.4.0</version>
        </dependency>

    </dependencies>
</project>

在根目錄下新建catalina-home文件夾,將webappsconf截切進去,這是因為在后續的VM options參數設置的時候方便值入參數。

點擊ideaopen鍵選擇pom.xml導入項目。選擇pom文件后需要堅持maven的配置是否正確,如果不正確需要修改pom的配置后重新下載依賴。

6、搭建源碼項目

配置項目啟動項,點擊idea工具欄選擇Edit Configurations配置啟動項,界面如下圖所示:

 

點擊+號選擇application啟動項,主要配置如下2個參數:

Main class:啟動主類,包含了一個main方法,具體參數 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

Ps${源碼項目根目錄}需要自己手動更改

注釋掉TestCookieFilter中的所有方法。注釋原因如下:

因為在pom中引入了test測試,所有在類中使用的CookieFilter找不到。

初始化jsp解析器。在ContextConfig的configureStart方法中初始化jsp解析器,並將其注入環境中。代碼如下:

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

如果不初始化jsp解析器那么在瀏覽器中輸入localhost:8080時會提示如下錯誤:

org.apache.jasper.JasperException: java.lang.NullPointerException

org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:598)

org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:514)

org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:386)

org.apache.jasper.servlet.JspServlet.service(JspServlet.java:330)

javax.servlet.http.HttpServlet.service(HttpServlet.java:741)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM