針對maven配置的spring+MVC項目,我們用Maven自帶的jetty和tomcat插件進行調試,這很方便。但是調試時,這些插件所啓動的web服務器,是如何來將我們的工程作爲一個web項目啓動並運行,可能並沒有看上去那麼簡單。搞清楚它們啓動時,是如何引用我們的項目,就是這的目的。
如果項目的名稱是mvn_mvc,那麼整個目錄結構就如上圖。
通常我們首先用mvn package生成上述的target目錄中帶紅色部分。其等效執行 mvn compile test-compile test war:exploded war:war。也就是包含編譯、測試和打包三步驟。接下來我們就可以使用mvn jetty:run或者mvn tomcat:run進行網站啓動,測試運行了。此時會對應生成臨時的jsp目錄,jetty對應的目錄名是work,tomcat對應的目錄名是tomcat。
那麼,項目對應的目錄就是target/mvn_mvc目錄嗎?
非也非也!!!
真正的項目目錄應該是:
- 本項目的java類來自於target/classes
- 本項目依賴的jar包來自於maven的pom配置(並沒有實際的物理目錄,爲maven插件動態組織管理)
- 本項目依賴的配置文件和靜態資源來自於src/main/webapp
綜上所述,可以得到兩個結論就是:
- 運行時,其實和target/mvn_mvc這個目錄(打包項目目錄)沒有任何關係。所以如果運行過程中如果修改了這個目錄的動態class和靜態文件,就看不到效果。必須改src/main/java和src/main/webapp的才行。
- 另外,maven設計的項目思想是:src目錄下是純本項目的代碼,沒有任何臨時文件和依賴jar包。這樣也便於代碼的管理:自己寫的是自己的,別人的機器的都放到別處
如果程序調試出現異常,就按照此方法檢查。