最近通過idea新創建一個web項目,想讓web項目的前后端代碼都動態部署。雖然網絡上已經有了不少文章,但我自己還是有遇到一些坑,因此總結一下我遇到的坑的經驗。
項目的web容器用的是本地的tomcat8。
1.新建一個本地tomcat啟動項
2.選擇需要部署的項目
這里需要說明一下,部署的項目有兩個選項,一個是:war一個是:war exploded。這兩個是不同的。如果選擇的是:war的方式。在server選擇自動部署的選項是這樣的:
我們選擇on 'Update' action選項為Redeploy時java代碼在debug啟動的時候會根據修改自動部署,第二個的on frame deactivation的選項只有兩個,就算我選擇了第二個,前端的freemark(*.ftl)代碼也不會自動部署。我就是在這里被坑到了,巨慘!搜了好久的資料都是說freemark的配置文件的<prop key="template_update_delay">0</prop>這個設置的,對我來說沒用。和我的情況並不符合。
所以我們跳過上面的坑。選擇war exploded的選項時,在server那邊的選項是
可以看到多出來了一個Update classes and resources 的選項。我們選擇這個,這樣當我們在debug我們的代碼的時候,前后端代碼就都可以自動部署了。
多說一句:
自動部署有時候不准確,這種情況我們還是重啟web容器,比較保險一些。比如:當我們在java代碼中增加方法的時候,自動部署是不會部署新的方法的,我們只能改已有方法的代碼,這是有效的。不能增加新的方法。還有有時候我們多次修改java代碼,一直沒有重啟web容器的時候有時候也會出現一些問題。這一點需要注意一下。