从源代码构建Tomcat的方式

开发 开发工具
对于开源软件,一些用户喜欢方便的开箱即用,还有一部分用户则喜欢从源代码入手,设置环境,重新构建(build)出来一个可用的版本,享受这种折腾的过程。

对于开源软件,一些用户喜欢方便的开箱即用,还有一部分用户则喜欢从源代码入手,设置环境,重新构建(build)出来一个可用的版本,享受这种折腾的过程。

做为开源项目里发展成熟、用户众多的一款开源软件,Apache Tomcat有许多优良的设计与架构,所以更少不了这种「弄脏双手,从头折腾」的使用者。

其实说实话,如果单纯为了分析了研究源代码,可以下载某一版本的Tomcat以及与之对应的源代码,即可搭建调试环境。这个之前的文章里写过一些(怎样调试Tomcat源码)。

但是自己用源代码构建这种方式,相对来说,你可以随意在源代码中修改尝试,然后打包,此时再进行Remote debug方式的调试时,代码行也可以完整的对应上,不会造成困惑,基本上和在IDE里搭好一个可以调试的Project一样。

本次我们了解从源代码入手「弄脏双手,从头折腾」构建一个Tomcat的过程。

简明过程:

  • 安装JDK
  • 安装Apache Ant
  • 下载Apache Tomcat源代码
  • 编辑Ant使用的构建文件(一般默认的是build.properites,会包含在Tomcat源代码中)
  • 下载构建需要依赖的库(其他一些lib)
  • 构建Tomcat

下面详细来看上述这些过程。

安装JDK

这个的安装过程自然不必多说,每个Java开发者都在学语言的***天了解过了。唯一注意的是,不同的Tomcat版本,需要对应不同的JDK,所以如果JDK版本太低可能导致新版本的Tomcat编译不成功。

安装Apache Ant

Ant是做什么的呢?编译安装过Linux/Unix软件的用户都知道make这个工具。Ant则是Java应用的构建工具。这里注意Ant的版本也不要不老。安装过程也和JDK/Maven这些Java工具类似,解压之后配置ANT_HOME,然后加到Path中使其可执行即可。安装完成命令行执行ant –version确认安装是否正确。

下载Tomcat源代码

可以到github上下载Tomcat源代码。

也可以在官方的SVN repository去下载,直接选择具体的版本。

在官网下载发行包的位置,可以直接下载当前***release的Tomcat和源代码,已归档的可以在归档文件中下载发行版和源代码。

编辑构建配置文件

在Tomcat源代码中,默认包含了两个Ant要使用到的文件:

  1. build.properties.default  
  2. build.xml 

拷贝build.properties.default文件一份,重命令为build.properties,再修改一下其中的base.path,这里设置一个绝对路径,用来存放构建过程中下载下来的tomcat依赖的第三方库。

然后再修改build.xml,将其中以下内容注释掉

  1. <antcalltarget="downloadzip"
  2.      <param name="sourcefile" value="${nsis.loc}"/> 
  3.      <param name="destfile" value="${nsis.exe}"/> 
  4.      <param name="destdir"value="${nsis.home}/.."/> 
  5.    </antcall> 

注释掉的内容是因为其会在下载依赖时去获取一个nsis.exe的文件,用来生成tomcat在windows平台的安装程序的。我们这里不需要,所以可以在ant的构建文件build.xml里把它去掉。否则因为证书的问题,容易出现下面这个异常

  1. javax.net.ssl.SSLHandshakeException: 
  2. sun.security.validator.ValidatorException:PKIX path building failed: sun.securi 
  3. ty.provider.certpath.SunCertPathBuilderException:unable to find valid certifica 
  4. tion path to requested target 

当然解决这个异常的问题网上也有解决方案,但相比注释要麻烦一些。

然后在源代码的根目录执行命令ant,静待构建完成。默认会在源代码的output目录下生成一个build目录,这个就是和我们解压zip获得的Tomcat一个样。

此外,ant命令执行中间如果出现ConnectionTimeout这种异常,可以重复试几次。

【本文为51CTO专栏作者“侯树成”的原创稿件,转载请通过作者微信公众号『Tomcat那些事儿』获取授权】

戳这里,看该作者更多好文

 

责任编辑:武晓燕 来源: 51CTO专栏
相关推荐

2021-12-07 12:00:12

UbuntuLinuxQt 6.2.2

2010-06-03 10:15:35

2009-11-30 09:16:44

VS2003源代码

2020-11-09 11:31:03

鸿蒙App

2017-10-30 22:13:37

Tomcatshell调试

2022-11-28 11:15:20

Tomcat回显方式

2022-12-29 12:33:20

2023-09-26 08:29:27

2009-04-03 08:28:39

2012-07-04 10:18:10

Tomcat调试代码分析

2009-06-12 19:03:41

Hadoop源代码Yahoo

2010-04-29 12:57:33

Unix源代码

2016-10-11 16:28:11

源代码

2010-08-03 10:16:52

Flex源代码

2020-11-13 13:05:27

Java开发代码

2019-01-13 15:16:35

2017-01-13 15:25:33

2010-03-29 16:48:18

Nginx内核优化

2017-01-06 15:13:25

LinuxVim源代码

2019-08-12 15:44:41

DockerTomcat
点赞
收藏

51CTO技术栈公众号