Tomcat 源碼組織結構 java
目錄結構 web
這裏所介紹的目錄結構,是使用CATALINA-BASE變量定義的路徑,若是沒有經過配置多個CATALINA-BASE目錄來使用多實例,則CATALINA-BASE和CATALINA-HOME值相同,也就是tomcat安裝的目錄。 數據庫
推薦使用的關鍵點,就是將源碼層次結構和生產部署的應用程序層次結構分開,這種分開有如下幾個好處: tomcat
Ant開發工具,就是用來建立和處理這些層次結構的。 app
對於管理員來講,用來控制應用程序源碼的目錄和文件層次可能更有吸引力,因此,下面要講介紹的組織會更適用。使用的配置文件也就是build.xml文件,在源碼目錄下的根節點,如下的這些目錄都是存在的: webapp
在開發環境中,會有兩個單獨的目錄 jsp
這倆目錄不能是壓縮包的形式,由於在開發部署的過程當中,這倆目錄是會被刪除和被建立的,正由於這個緣由,若是是爲了維護性能來記錄變化,不容許編輯這倆目錄下的 任何源文件,由於這些優化會在下一次編譯的時候丟失。 工具
外部依賴 性能
當應用程序須要一個其餘的jar文件或者其餘資源時,而這些資源來源於其餘外部的工程或者是包,最簡單的例子,當應用程序須要使用一個數據源,也就是須要一個JDBC驅動器。 開發工具
不一樣的開發人員,會選擇使用不一樣的合適的方法來解決這個問題,有一些人會推薦將所依賴的jar文件進行一次拷貝,而後複製到全部須要改jar文件的應用程序的源碼控制壓縮包中,然而當在多個應用程序中使用同一個jar文件時,當須要對這個jar文件進行更新時,這就須要對多個位置的文件進行更新。
所以,就會推薦不將該文件拷貝到應用程序的源碼壓縮包裏面,替換的方法是將該外部依賴包集成到應用程序的編譯過程當中。經過這種方法,只須要選擇合適版本的jar文件,而不須要在當jar文件發生更新時,去擔憂應用程序。
好比ant build.xml文件時,須要指定須要拷貝文件的位置,當這些文件發生改變時,不須要修改build.xml,這些編譯參數能夠基於每個應用程序集進行自定義,或者是使用家目錄下的默認標準編譯參數。
在不少狀況下,系統開發人員已經在tomcat的lib目錄下安裝了所需的jar文件,根本不須要作其餘的操做,build.xml中自動就包含了這些文件的完整路徑。
源碼控制
正如以前提到的,強烈推薦將組成應用系統的源碼,存放在一個相似於CVS的源碼控制系統中,若是選擇這麼作,在源碼層次中的每個目錄和文件都應該被登記和保存,可是不會產生新的文件,若是註冊了二進制文件,同時須要向源碼控制系統說明。
建議不要將build和dist目錄下的文件保存在源碼控制系統中,一個簡單的方法來告訴CVS系統去忽略這些目錄,是在源碼根目錄中指定一個.cvxignore文件,內容包含build和dist便可。
編譯XML配置文件
在tomcat中,會使用ant來管理java源碼文件的兼容性,同時建立實施的層次結構,ant的操做是在一個名爲build.xml的配置文件的控制下進行的,該文件中定義了須要操做的步驟,該文件存放在源碼層次結構的根部木了下,在源碼控制系統中會被檢查。
和其餘編譯文件相似,build.xml提供了許多參數,來支持其餘的開發活動,好比建立相關聯的java文檔,清空開發環境家目錄,爲應用程序打包分發到其餘地方,一個好的build.xml中應該包含內部註釋,描述這些參數的功能,經過ant -projecthelp來顯示工程文檔,改變目錄中包含的內容和格式。
從頭開始,基礎的build.xml文件,讓應用程序能夠被自定義和安裝源碼目錄,在該文件中描述了能夠執行的多種參數,一般包含如下幾個: