從源代碼構建Tomcat的方式
對于開源軟件,一些用戶喜歡方便的開箱即用,還有一部分用戶則喜歡從源代碼入手,設置環(huán)境,重新構建(build)出來一個可用的版本,享受這種折騰的過程。
做為開源項目里發(fā)展成熟、用戶眾多的一款開源軟件,Apache Tomcat有許多優(yōu)良的設計與架構,所以更少不了這種「弄臟雙手,從頭折騰」的使用者。
其實說實話,如果單純?yōu)榱朔治隽搜芯吭创a,可以下載某一版本的Tomcat以及與之對應的源代碼,即可搭建調試環(huán)境。這個之前的文章里寫過一些(怎樣調試Tomcat源碼)。
但是自己用源代碼構建這種方式,相對來說,你可以隨意在源代碼中修改嘗試,然后打包,此時再進行Remote debug方式的調試時,代碼行也可以完整的對應上,不會造成困惑,基本上和在IDE里搭好一個可以調試的Project一樣。
本次我們了解從源代碼入手「弄臟雙手,從頭折騰」構建一個Tomcat的過程。
簡明過程:
- 安裝JDK
- 安裝Apache Ant
- 下載Apache Tomcat源代碼
- 編輯Ant使用的構建文件(一般默認的是build.properites,會包含在Tomcat源代碼中)
- 下載構建需要依賴的庫(其他一些lib)
- 構建Tomcat
下面詳細來看上述這些過程。
安裝JDK
這個的安裝過程自然不必多說,每個Java開發(fā)者都在學語言的***天了解過了。唯一注意的是,不同的Tomcat版本,需要對應不同的JDK,所以如果JDK版本太低可能導致新版本的Tomcat編譯不成功。
安裝Apache Ant
Ant是做什么的呢?編譯安裝過Linux/Unix軟件的用戶都知道m(xù)ake這個工具。Ant則是Java應用的構建工具。這里注意Ant的版本也不要不老。安裝過程也和JDK/Maven這些Java工具類似,解壓之后配置ANT_HOME,然后加到Path中使其可執(zhí)行即可。安裝完成命令行執(zhí)行ant –version確認安裝是否正確。
下載Tomcat源代碼
可以到github上下載Tomcat源代碼。
也可以在官方的SVN repository去下載,直接選擇具體的版本。
在官網下載發(fā)行包的位置,可以直接下載當前***release的Tomcat和源代碼,已歸檔的可以在歸檔文件中下載發(fā)行版和源代碼。
編輯構建配置文件
在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
當然解決這個異常的問題網上也有解決方案,但相比注釋要麻煩一些。
然后在源代碼的根目錄執(zhí)行命令ant,靜待構建完成。默認會在源代碼的output目錄下生成一個build目錄,這個就是和我們解壓zip獲得的Tomcat一個樣。
此外,ant命令執(zhí)行中間如果出現ConnectionTimeout這種異常,可以重復試幾次。
【本文為51CTO專欄作者“侯樹成”的原創(chuàng)稿件,轉載請通過作者微信公眾號『Tomcat那些事兒』獲取授權】