如何将tomcat源码以maven方式运行

前言

最近在分析tomcat的启动流程,虽然我们可以在idea中查看到tomcat的源代码,但是我们不能在上面做一些代码注释,这就会 非常的不方便,所以我们还是能在本地 运行一份源码,这样非常有利于我们分析源码

一、下载tomcat源码,选择tomcat-8.5.55版本

进入tomcat官网,点击左侧菜单栏Download对应的版本,下载源码

二、idea中创建项目

1.在idea中创建一个空白项目,名称为tomcat_study

2.打开项目源目录,将tomcat的源码解压到其中

3.创建文件夹

在tomcat的源码文件夹下面创建home目录,把源码中的conf目录和webapps目录剪切到其中(其他新建的目录如logs等),另外新建maven的pom.xml文件。

4、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.55</artifactId>
 <name>Tomcat8.5.55</name>
 <version>8.5.55</version>

 <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>org.apache.ant</groupId>
   <artifactId>ant</artifactId>
   <version>1.9.5</version>
  </dependency>

  <dependency>
   <groupId>javax.xml.rpc</groupId>
   <artifactId>javax.xml.rpc-api</artifactId>
   <version>1.1</version>
  </dependency>

  <dependency>
   <groupId>wsdl4j</groupId>
   <artifactId>wsdl4j</artifactId>
   <version>1.6.2</version>
  </dependency>

  <dependency>
   <groupId>org.eclipse.jdt.core.compiler</groupId>
   <artifactId>ecj</artifactId>
   <version>4.5.1</version>
  </dependency>
 </dependencies>

 <build>
  <finalName>Tomcat8.5.55</finalName>
  <sourceDirectory>java</sourceDirectory>
  <resources>
   <resource>
    <directory>java</directory>
   </resource>
  </resources>
  <plugins>
   <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
    <configuration>
     <encoding>UTF-8</encoding>
     <source>1.8</source>
     <target>1.8</target>
    </configuration>
   </plugin>
  </plugins>
 </build>
</project>

5、tomcat启动配置

5.1 构建项目

完成上面的操作以后,我们在idea中重新打开项目,直接选中我们增加的pom.xml文件,将所以的包下载完成以后,构建项目结构。

5.2 设置Run/Debug configurations

其中

Main class:
org.apache.catalina.startup.Bootstrap

VM options 按照自己的路径进行修改:
-Dcatalina.home=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home
-Dcatalina.base=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home
-Djava.endorsed.dirs=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home/endorsed
-Djava.io.tmpdir=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home/temp
-Djava.util.logging.manager=org.apache.juli.ClassLoaderLogManager
-Djava.util.logging.config.file=G:/projects/tomcat_study/apache-tomcat-8.5.55-src/home/conf/logging.properties

5.3 设置ContextConfig类

然后打开ContextConfig(org.apache.catalina.startup 下面) 类,加上一行代码:context.addServletContainerInitializer(new JasperInitializer(),null);

5.4 启动tomcat

即可debug查看tomcat的初始化和启动过程以及其他源码执行,入口类就是Bootstrap类的main方法。

总结

通过上面过程,我们就可以 将tomcat源码通过maven方式在本地运行起来,小编已经成功运行起来,并且对tomcat中 调用servlet初始化的流程进行了注释

到此这篇关于如何将tomcat源码以maven方式运行的文章就介绍到这了,更多相关tomcat源码以maven方式运行内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java(JDK/Tomcat/Maven)运行环境配置及工具(idea/eclipse)安装详细教程

    Java(计算机编程语言) Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征. Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程. Java具有简单性.面向对象.分布式.健壮性.安全性.平台独立与可移植性.多线程.动态性等特点. Java可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等. Java环境配置(

  • IDEA创建maven项目时在tomcat运行浏览器404的问题

    在使用IDEA构建maven入门项目进行学习时遇到了一个不解的错误,特此记录以下 完整的项目结构应该如下: 但是在tomcat运行项目时遇到index.jsp页面404的情况,很懵但是项目创建步骤并没错,tomcat运行也良好. 原因是自己生成的maven的artifacts路径不对,导致找不到项目(网上有老哥说是IDEA是默认使用自带的tomcat配置,而我们一般用自己的tomcat配置). 解决办法: 首先打开File->Project Structure: 点击artifacts,如果没有

  • Maven 修改tomcat运行版本和端口的实现方法

    maven默认是使用tomcat6跑项目的,这段是让maven用tomcat7去跑 在pom.xml中添加 <build> <!-- we dont want the version to be part of the generated war file name --> <finalName>${project.artifactId}</finalName> <defaultGoal>compile</defaultGoal> &

  • Eclipse中导入Maven Web项目并配置其在Tomcat中运行图文详解

    今天因为实习的关系需要讲公司已经开发的项目导入进Eclipse,而公司的项目是用Maven来构建的所以,需要将Maven项目导入进Eclipse下. 自己因为没有什么经验所以搞了得两个多小时,在这里和大家分享一下自己的经验已经在这之中遇到的一些问题. 首先我通过svn将公司的项目checkout到了本地. 因为Maven遵循的是规约比配置重要的原则,所以Maven项目的结构一般是进入目录后是一个pom.xml文件和一个src文件夹,当然可能还存在一些README之类的这些都不重要,最关键的就是p

  • IDEA Maven项目使用debug模式运行Tomcat的详细教程

    1.在pom.xml中添加下面的依赖就可以了 <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.0.1</version> <scope>provided</scope> // 这个是作用域 </dependency> <depend

  • 如何将tomcat源码以maven方式运行

    前言 最近在分析tomcat的启动流程,虽然我们可以在idea中查看到tomcat的源代码,但是我们不能在上面做一些代码注释,这就会 非常的不方便,所以我们还是能在本地 运行一份源码,这样非常有利于我们分析源码 一.下载tomcat源码,选择tomcat-8.5.55版本 进入tomcat官网,点击左侧菜单栏Download对应的版本,下载源码 二.idea中创建项目 1.在idea中创建一个空白项目,名称为tomcat_study 2.打开项目源目录,将tomcat的源码解压到其中 3.创建文

  • Tomcat源码导入idea的方法

    目录 1.下载tomcat代码 2.下载之后的目录结构 3.源码使用ant构建(这里改用pom) 4.问题解决 4.1控制台乱码 4.2访问8080报错jsp等class找不到 5.访问localhost:8080 1.下载tomcat代码 本文选择9.0分支,此版本servlet还是javax开头的 github 2.下载之后的目录结构 3.源码使用ant构建(这里改用pom) <project xmlns="http://maven.apache.org/POM/4.0.0"

  • Springboot 2使用外部Tomcat源码分析

    Springboot 使用外部 Tomcat 1.修改 pom.xml,改为打 war 包 <packaging>war</packaging> 2.将 Springboot 内置 tomcat 作用域改为provided <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifac

  • 一次tomcat源码启动控制台中文乱码的调试过程记录

    发现问题 今天准备学习下tomcat源码,于是从官网下载了tomcat的源码,导入到IDEA中,使用maven工具build完项目之后,启动项目,控制台打印了tomcat日志,但是中文都是乱码. 一开始我怀疑是IDEA的问题,于是在网上找了各种解决办法尝试.大致有这几种: 1.修改run/debug configurations,添加VM options参数:-Dfile.encoding=utf-8; 2.修改run/debug configurations,添加Enviroment vari

  • Volley源码之使用方式和使用场景详解

    概述 Volley是Google在2013年推出的一个网络库,用于解决复杂网络环境下网络请求问题.刚推出的时候是非常火的,现在该项目的变动已经很少了.项目库地址为https://android.googlesource.com/platform/frameworks/volley 通过提交历史可以看到,最后一次修改距离今天已经有一段时间了.而volley包的release版本也已经很久没有更新了. author JeffDavidson<jpd@google.com> SunMar1316:3

  • Tomcat源码解析之Web请求与处理

    前言 Tomcat最全UML类图 Tomcat请求处理过程: Connector对象创建的时候,会创建Http11NioProtocol的ProtocolHandler,在Connector的startInteral方法中,会启动AbstractProtocol,AbstractProtocol启动NioEndPoint进行监听客户端的请求,EndPoint接受到客户端的请求之后,会交给Container去处理请求.请求从Engine开始经过的所有容器都含有责任链模式,每经过一个容器都会调用该容

  • 详解从源码分析tomcat如何调用Servlet的初始化

    引言 上一篇博客我们将tomcat源码在本地成功运行了,所以在本篇博客中我们从源码层面分析,tomcat在启动的过程中,是如何初始化servlet容器的.我们平常都是将我们的服务部署到 tomcat中,然后修改一下配置文件,启动就可以对外提供 服务了,但是我们对于其中的一些流程并不是非常的了解,例如如何加载的web.xml等.这是我们分析servlet 和 sringMVC必不可少的过程. 注释源码地址:https://github.com/good-jack/tomcat_source/tre

  • 搭建Tomcat 8源码开发环境的步骤详解

    前言 最近在网上搜索了很多关于tomcat源码环境搭建的文章,发现按照文章的步骤,几乎都启动不了,于是自己尝试搭建,下面是搭建的方法. 基础环境搭建 1.下载tomcat源代码,我这里是通过svn的方式下载的,svn下载地址 2.下载安装maven工具,这里我就不多说了,安装说明太多了,自己网上找. 3.IDE,我这里使用idea 生成maven工程 我的代码本地目录是: /Users/helanzhou/Documents/helanzhou/java/Tomcat/tomcat8/tomca

  • Idea中tomcat启动源码调试进入到tomcat内部进行调试的方法

    使用idea开发工具调试代码的时候,如果是java的web项目,使用的是tomcat作为web容器,打断点debug调试跟踪,当跟踪到org.apache.catalina包下的时候,则无法进入,这是因为idea运行的tomcat是通过插件的方式集成的,tomcat里面的lib包不再项目的依赖路径中,所以不能跟踪进去 首先在自己项目中被tomcat回调的接口实现类中,标记一个断点信息,通过idea启动web项目,当出现如图所示的断点信息的时候,因为断点位置标记的是tomcat回调的接口类,所以按

  • 详解IDEA创建Tomcat8源码工程流程

    上一篇文章的产出,其实离不开网上各位大神们的辅助,正是通过他们的讲解,我才对Tomcat的结构有了更进一步的认识. 但在描述前后端交互的过程中,还有很多细节并没有描述到位,所以就有了研究Tomcat源码的想法. 而在配置Tomcat源码工程的过程中,摸摸爬爬两个多小时,总算是成功启动了. 故撰写此篇博文,授之以渔. 准备工作 1.apache-tomcat-8.5.32-src源码包,官网下载并解压即可: 2.apache-ant-1.10.5(用的最新版)下载并安装:Tomcat源码默认采用的

随机推荐