王二小

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)

posted on 2020-03-16 22:01  王二小z  阅读(1132)  评论(0编辑  收藏  举报

导航