天天看點

eclipse修改java檔案馬上生效_Eclipse Maven管理項目——解決修改.java檔案不需要重新開機tomcat了...

對于maven管理項目這方面很次,就不詳細說了,适合看此文章的是,平時用到了maven,但是又被他的改了類儲存立即重新編譯折騰的很疼的人看,曾經使用過兩個月,maven環境都是别人給的,至于為什麼這麼搞,從沒想過,現在的使用Eclipse中有大量的插件,出現了一個問題,就是改了.java檔案,則立即部署項目,相當于要重新開機tomcat,個人感覺這是一個非常浪費時間的事情,真心想解決。隻要一改類檔案,需要重新開機tomcat伺服器,這是一個很疼的問題。

在修改維護項目的時候,很大一部分時間都是在修改别人寫的代碼,更多需要是debug,去走一走代碼的執行流程,如果在修改一行代碼之後,發現項目自動去重新釋出,非常慢,項目代碼量大的話,也容易引起tomcat記憶體不足,當然沒有手動設定tomcat最大記憶體的除外。現在特地來整理整理,怎麼解決這個問題的,回想之前呆的項目組中解決的也不算非常完美,但不要失望,在沒有完美解決的時候,采取個人喜歡的折中方式也是不錯的。

附上個Eclipse插件截圖:

eclipse修改java檔案馬上生效_Eclipse Maven管理項目——解決修改.java檔案不需要重新開機tomcat了...

我感覺這一大堆插件裡面,猜測是由于使用maven來管理代碼,導緻修改了代碼就需要部署,重新開機tomcat,單純的eclipse Java EE IDE可以不用重新開機的,在糾結中使用了一段時間之後,果斷找了一種解決辦法。

eclipse修改java檔案馬上生效_Eclipse Maven管理項目——解決修改.java檔案不需要重新開機tomcat了...
eclipse修改java檔案馬上生效_Eclipse Maven管理項目——解決修改.java檔案不需要重新開機tomcat了...

随便找一個合适自己的Eclipse版本的下載下傳。

說一下,不推薦将解壓的檔案放入到eclipse的plugins檔案夾下,eclipse3.4版本之後可以直接放入eclipse\dropins目錄下,建立一個檔案夾,如:sysdeo,再建立一個檔案夾:eclipse,再建立一個檔案夾:plugins,将下載下傳的解壓檔案com.sysdeo.eclipse.tomcat_3.3.0,放入此目錄下面,重新開機eclipse,試試。

eclipse修改java檔案馬上生效_Eclipse Maven管理項目——解決修改.java檔案不需要重新開機tomcat了...

說明:Eclipse工具欄上面有上面的小圖示,說明插件安裝成功了。

接下來需要設定一些tomcat插件的參數,定位到

eclipse修改java檔案馬上生效_Eclipse Maven管理項目——解決修改.java檔案不需要重新開機tomcat了...
eclipse修改java檔案馬上生效_Eclipse Maven管理項目——解決修改.java檔案不需要重新開機tomcat了...

F:\tomcat6.35\apache-tomcat-6.0.35\conf\Catalina\localhost

上圖中的标記為tomcat中項目的釋出方式,采用在conf\Catalina\localhost目錄下面建立一個與應用同名的.xml檔案,檔案内容如下:

說明:使用Eclipse自帶的Server來部署項目,部署的項目存儲上上述的docBase目錄,這時候不使用自帶Server來啟動項目,而采取tomcat雄貓的小圖示來啟動,即使用自帶Server來管理部署項目,使用雄貓來啟動項目。

說明:使用此插件需要注意:

1、如果想手動修改tomcat最大記憶體,展開上圖tomcat節點,找到JVMSettings設定項,修改。

2、如果多個項目的類名稱重複了,在debug時出現斷點找錯的情況(就是在A工程下面的類,斷點定位到B工程下面了),可以采用手動修改源代碼位置的方式來解決,具體展開上圖tomcat節點,找到Source Path節點,在出現的界面中将需要debug的項目打勾,調試完畢,再還原即可。

3、重大問題,修改的jsp檔案不自動編譯了,解決這個問題的辦法有兩種:第一:折中使用改tomcat插件,調試背景代碼的時候使用雄貓啟動服務,修改前端頁面的時候采用Server來啟動;第二:如果掌握了mvn指令,編譯安裝完項目之後,直接在target目錄下面的app裡面修改,相當于直接在tomcat下面修改,将修改完畢後的相關頁面,再拷貝至WebRoot目錄下面,不足就是需要掌握一些mvn指令,例如:mvn install -Dmaven.test.skip=true等,每次修改完之後需要執行相應指令來編譯代碼。強烈說明,如果使用此種方式解決的,将上述說的這段代碼的docBase路徑切換值$APP$\target\$APP$-1.0路徑。