zoukankan      html  css  js  c++  java
  • Tomcat启动分析(二)-自己编译Tomcat

    为了方便分析Tomcat源码,利用大家习惯的方式来进行Debug调试,那么如何将Tomcat源码导入到Eclipse呢,这就是本文的重点

    1 准备

    1.1 获取Tomcat源码

    获取tomcat源码有多种方式

    1)Git方式从github获取,地址:https://github.com/apache/tomcat 或者 git://git.apache.org/tomcat.git

    2)SVN方式从Apache官网获取,地址:http://svn.apache.org/repos/asf/tomcat/

    3)直接下载源码,地址:http://tomcat.apache.org/download-[tomcat-version]0.cgi

    下载下来之后,首先建议大家先看一下BUILDING.txt,这个文档中有详细的编译说明,包括编译依赖、编译过程。同时阅读build.xml,这个里面会有各种编译参数

    1.2 安装配置ant

    获取ant,地址:http://ant.apache.org/bindownload.cgi

    下载后解压,并配置ANT_HOME及将%ANT_HOME%/bin添加到path中,方式同JDK一样

    1.3 安装配置JDK

    这个没有什么要说的,很基本的。不过需要注意的是在building.txt中会有当前源码对JDK版本的要求。

    2 编译

    2.1 将tomcat源码编译为eclipse可导入的项目

    在执行之前大家先看两项内容

    2.1.1 building.txt中的说明

    (3.2) Building
    
     1. The build is controlled by creating a ${tomcat.source}/build.properties
        file.
    
        It is recommended to always create the file, because of unfortunate
        default value of base.path property. You may start with the following
        content for the file:
    
            # ----- Default Base Path for Dependent Packages -----
            # Replace this path with the directory path where dependencies binaries
            # should be downloaded
            base.path=/home/me/some-place-to-download-to //重点:需要将build.properties.default重命名为build.properties,并且修改bath.path为源码存放目录
    
     2. Configure base.path property by adding it to the
        ${tomcat.source}/build.properties file.
    
        The base.path property specifies the place where Tomcat dependencies
        required by the build are downloaded. It is recommended to place this
        directory outside of the source tree, so that you do not waste your
        time re-downloading the libraries.
    
    * NOTE: The default value of the base.path property configures the build script
      to download the libraries required to build Tomcat to the
      ${user.home}/tomcat-build-libs directory.
    
    * NOTE: Users accessing the Internet through a proxy must use the properties
      file to indicate to Ant the proxy configuration.
    
      The following properties should be added to the ${tomcat.source}/build.properties
      file.
    
            proxy.use=true
            proxy.host=proxy.domain
            proxy.port=8080
            proxy.user=username
            proxy.password=password
    
      See Apache Ant documentation for the <setproxy> task for details.

    2.1.2 build.xml

    <!-- ============================ IDE Support ============================ –>
    //可以将源码编译为Eclipse或者NetBeans项目
      <!-- ============================ Eclipse ================================ -->
    
      <target name="ide-eclipse"
              depends="download-compile, extras-webservices-prepare, download-test-compile"
              description="Prepares the source tree to be built in Eclipse">
    
        <!-- Copy the sample project files into the root directory -->
        <copy file="${tomcat.home}/res/ide-support/eclipse/eclipse.project" tofile="${tomcat.home}/.project"/>
        <copy file="${tomcat.home}/res/ide-support/eclipse/eclipse.classpath" tofile="${tomcat.home}/.classpath"/>
    
        <!-- Copy compiler settings file -->
        <mkdir dir="${tomcat.home}/.settings" />
        <copy file="${tomcat.home}/res/ide-support/eclipse/org.eclipse.jdt.core.prefs.properties" tofile="${tomcat.home}/.settings/org.eclipse.jdt.core.prefs"/>
    
        <echo>Eclipse project files created.
    Read the Building page on the Apache Tomcat documentation site for details on how to configure your Eclipse workspace.</echo>
      </target>
    
      <!-- ============================ NetBeans =============================== -->
    
      <target name="ide-netbeans"
              depends="-ide-netbeans-protect,-ide-netbeans-create"
              description="Create NetBeans project files only if none exist">
      </target>
    
      <target name="-ide-netbeans-protect"
              if="tomcat-nb.home.exists"
              depends="-ide-netbeans-check">
        <!-- Protect existing NetBeans project files -->
        <echo>NetBeans project files already exist and have been protected!
    Use the "ide-netbeans-replace" target if you wish to overwrite them.</echo>
      </target>
    
      <target name="-ide-netbeans-check">
        <!-- protect existing files if the NetBeans project directory exists  -->
        <condition property="tomcat-nb.home.exists">
            <available file="${tomcat-nb.home}" type="dir"/>
        </condition>
      </target>
    
      <target name="ide-netbeans-replace" depends="-ide-netbeans-create">
        <!-- Bypass protection of any existing NetBeans project files -->
      </target>
    
      <target name="-ide-netbeans-create"
              unless="tomcat-nb.home.exists">
        <!-- Unconditionally create or overwrite default NetBeans project files -->
        <property name="tomcat-nb.dist" value="${tomcat.home}/res/ide-support/netbeans" />
        <mkdir dir="${tomcat-nb.home}/"/>
        <copy todir="${tomcat-nb.home}" overwrite="true">
          <fileset dir="${tomcat-nb.dist}"/>
        </copy>
        <echo>NetBeans project files created.
    Read the Building page on the Apache Tomcat documentation site for details on how to customise your NetBeans project.</echo>
      </target>

    2.1.3 编译项目

    #执行如下命令,其中[G:learning	omcat]是我的tomcat源码存放目录,注意:必须联网编译
    G:learning	omcat>ant ide-eclipse

    编译完成后,就可以将tomcat导入到Eclipse中,如下所示

    image

    发现有一些依赖不存在,那么我们就修改依赖

    需要增加ANT_HOME和TOMCAT_LIBS_BASE两个变量,入下图所示,

    image

    大家在设置变量值得时候一定要搞清楚自己编译时下载JAR包的位置

    image

    完成后就可以正常编译了。

    image

    2.1.3 运行项目

    这个与我们平时运行项目一样,如下图所示:

    image

    运行完成后,我们访问:http://localhost:8080,如下图所示

    image

    接下来大家就可以以DEBUG模式进行Tomcat调试了。

    2.2 将tomcat源码编译为发布版本

    #在源码目录中直接执行ant即可
    G:learning	omcat>ant

    完成后会生成G:learning omcatoutputuild目录,这个目录里面的内容看起来大家都很熟悉了,这与官网下载的发布版本一模一样。

    大家启动G:learning omcatoutputuildinstartup.bat就可以运行tomcat了。

    运行完后访问:http://localhost:8080,如下图所示

    image

    参考:

    [1]eclipse 导入tomcat7源码

    [2]Tomcat 7 源码分析 - 下载 tomcat source code 并导入eclipse

  • 相关阅读:
    C# 类与类的关系(2)
    如何成为一个优秀的程序员?
    设计模式详细系列教程 (二) 创建型模式
    UML系列 (四) 实战机房收费系统
    UML系列 (三) 四种关系
    HDU 4003 Find Metal Mineral(树形DP+分组背包)
    从零开始的acm竞赛生涯
    2016 ACMICPC ECFinal题解整理
    第四章 复杂选择结构
    第五章 循环结构
  • 原文地址:https://www.cnblogs.com/wlzjdm/p/6972121.html
Copyright © 2011-2022 走看看