对于开源软件,一些用户喜欢方便的开箱即用,还有一部分用户则喜欢从源代码入手,设置环境,重新构建(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要使用到的文件:
- build.properties.default
- build.xml
拷贝build.properties.default文件一份,重命令为build.properties,再修改一下其中的base.path,这里设置一个绝对路径,用来存放构建过程中下载下来的tomcat依赖的第三方库。
然后再修改build.xml,将其中以下内容注释掉
- <antcalltarget="downloadzip">
- <param name="sourcefile" value="${nsis.loc}"/>
- <param name="destfile" value="${nsis.exe}"/>
- <param name="destdir"value="${nsis.home}/.."/>
- </antcall>
注释掉的内容是因为其会在下载依赖时去获取一个nsis.exe的文件,用来生成tomcat在windows平台的安装程序的。我们这里不需要,所以可以在ant的构建文件build.xml里把它去掉。否则因为证书的问题,容易出现下面这个异常
- javax.net.ssl.SSLHandshakeException:
- sun.security.validator.ValidatorException:PKIX path building failed: sun.securi
- ty.provider.certpath.SunCertPathBuilderException:unable to find valid certifica
- tion path to requested target
当然解决这个异常的问题网上也有解决方案,但相比注释要麻烦一些。
然后在源代码的根目录执行命令ant,静待构建完成。默认会在源代码的output目录下生成一个build目录,这个就是和我们解压zip获得的Tomcat一个样。
此外,ant命令执行中间如果出现ConnectionTimeout这种异常,可以重复试几次。
【本文为51CTO专栏作者“侯树成”的原创稿件,转载请通过作者微信公众号『Tomcat那些事儿』获取授权】