要運用好ant來構建項目,我認爲理清項目的目錄至關重要:
拿myeclipse爲例:WebProject和JavaProject在工作空間的目錄結構:
一個WebProject下面會有兩個屬於我們的目錄 /src 、/WebRoot,其餘的.classpath .project爲IDE工具自己生成的配置文件
/src一般存放項目的各種配置文件和java文件
/WebRoot是Web項目的根目錄,存放各種jsp、圖片、js庫、各種jar包、各類資源等
在/WebRoot目錄下有一個WEB-INF目錄, 裏面有一個文件夾爲classes,myeclipse會把/src下的java文件編譯後生成的class文件放到這裏,如果web應用存在依賴的其他項目,則會把其他項目編譯後生成的class文件一併放到這裏
一個JavaProject下面也會有兩個屬於我們的目錄 /bin、/src
/src和web項目一樣存放java源文件,
/bin目錄下就存放着編譯java後生成的class文件 這裏說的目錄均指myeclipse工作空間的目錄
myeclipse的部署都完成了哪些任務?
1、編譯:我們點擊Deploy的時候往往都是部署一個WebProject,myeclipse會先編譯項目中的java文件,也就是/src裏的java文件(如果有的話)、然後檢查項目是否存在依賴關係(通過工作空間裏的.classpath配置文件,可以去閱讀一下這個配置文件)如果web項目存在依賴關係,就會去編譯所依賴的項目中的java文件,對於web項目,編譯.java生成的.class會放在/WebRoot/WEB-INF/classes/ 下面,對於java項目, 編譯.java生成的.class會放在 /bin下面
2、組合:組合就是把web項目所依賴的其他項目下的class文件放在自己的目錄下,因爲上傳到服務器上的只有WebProject,所以myeclipse會把其他項目/bin下面的class文件copy到自己的classes文件夾下
3、上傳:把組合後的WebRoot目錄下面的所有內容, 上傳到服務器上以項目名命名的目錄下。
以上這種部署是我們本地的部署, 但就我的項目經驗而言,生產機上的項目目錄並非這樣:
在生產機上, 項目的classes文件夾下不存放任何class文件,只存放和項目有關的配置文件,而web依賴的class文件會打成相應的jar包放在/WEB-INF/lib/下面,
這樣管理起來比較方便, 每次程序如果有更新也比較方便。
其實ant腳本就是按照這個思路,手動的按照生產機上的目錄完成編譯、打包、放置的過程