1. 程式人生 > >如何在Eclipse下,實現ant的web專案修改儲存後,實時部署,直接重新整理即可看到結果

如何在Eclipse下,實現ant的web專案修改儲存後,實時部署,直接重新整理即可看到結果

最近碰到了一個老專案,是ant的web專案,把專案匯入到Eclipse以後,發現修改了檔案之後,要先執行build.xml,再把打包好的war丟到Tomcat下,再重新整理才能看到效果。由於以前沒用過ant,所以自己研究了一套辦法(如果ant確實有像Eclipse下修改後直接重新整理就可看到結果的方法,還望眾客官不吝賜教)。

本專案參考了以下4個帖子:

帖子1:  http://blog.csdn.net/futurelight/article/details/624950

帖子2: http://wenku.baidu.com/view/5aa83ac46137ee06eff918ac.html

帖子3: 如何設定Tomcat遠端除錯(找不到原帖地址了,請作者原諒我*_*)

帖子4: http://www.67tgb.com/?p=414

其實這一套流程的本質如下:

1. 修改Eclipse的預設配置,將當前工程的預設Builders修改為ant,再配合Eclipse的Project--Build Automatically,保證每次save都會自動呼叫ant進行編譯(詳情請參見帖子1);

2. 將編譯好的結果中,Tomcat需要的檔案全都copy到一個目錄下(參見帖子2,並請查詢ant手冊或谷歌度娘);

3. 使用Tomcat遠端部署(即在<%Tomcat%>/conf/Catalina/localhost目錄下增加一個配置檔案實現部署)的方式,完成專案部署(參見帖子2);

4. 重新整理瀏覽器,看結果變化;

5. Eclipse遠端監聽、除錯。

以上的詳情可以參見帖子1、2,下面介紹一些細節:

a). 第1步編譯時提示“找不到javax.servlet.http軟體包”,將tomcat\common\lib\servlet-api.jar拷貝到jdk\jre\lib\ext目錄下即可。

b). 第2步複製檔案時,如果不知道複製以後檔案的結構,可以將該工程先打成war,與部署解壓以後的資料夾結構保持相同即可。

c). 第2步複製檔案時,由於lib包通常不會發生變化,建議將lib的copy獨立出來,除非引用的lib發生變化,否則不執行,這樣可以節約時間。

d). 第3步要靠Web容器的遠端部署支援,我自己使用的Tomcat,比較簡單。如果換成其他容器,則需要容器自身的支援,或者直接在第2步時直接將相關檔案複製到其他容器的指定目錄。

e). 第5步中,除錯需要使用遠端除錯,需要對Tomcat和Eclipse分別配置。Tomcat的設定方法是在start.bat的末尾(call "%EXECUTABLE%" start %CMD_LINE_ARGS%)之前增加一行,內容為:SET JAVA_OPTS=-Xdebug -Xrunjdwp:transport=dt_socket,address=8000,server=y,suspend=n。這裡的address=8000是後面要監聽的埠。Eclipse配置遠端監聽比較簡單,使用Debug Configurations--Remote Java Application新建一個配置,選好工程,配好host、port(即上面的8000)。啟動Tomcat、啟動Debug,開始除錯。

f). 第5步中,除錯的時候容易出現“Unable to install breakpoint due to missing line number”的錯誤,在參考的帖子4中有非常詳細的解決辦法,修改即可。

g). 第5步中,使用Tomcat除錯時,不要使用Eclipse內建的Server,會提示找不到專案(404錯誤),建議找一個Eclipse的Tomcat外掛,使用這個外掛啟動Tomcat。

缺點:

a). save後自動執行ant指令碼是通過Eclipse自身的Project--Build Automatically實現,當專案較大時,速度會比較慢,這個請自行試情況而定。

b). 由於ant靈活性較大,沒有像Maven一樣強制要求目錄結構,所以在規劃專案目錄結構時請把類似的檔案放到一起,否則copy的時候要寫的語句會非常麻煩(吐槽一下我維護的這個舊專案,十幾個配置檔案放了七、八個地方,即使是他自己原來的整合語句,也寫了一堆,你丫為什麼當時就不把配置檔案放在一起)。