在自己嘗試着使用idea配置一些maven web項目基本的設置,雖然不起眼,但是對於使用idea進行開發卻至關重要。
測試時的目錄結構如下圖所示:
有幾個重要概念在開發時需要特別注意,只有弄清楚才能自如的對項目進行相關設置,從打開項目結構alt+ctrl+shift+s說起:
1 project 中的project compile output目錄設置的路徑不重要,因為在具體module中會被Path覆蓋。
2 在關鍵的module設置中,maven結構 src/main/java一般設置為source,里面的java文件在編譯后會放在module中path設置的位置,使用maven,path的默認位置是項目名/target/classes下(可更改),注意項目src/main/resources文件也會被直接編譯到target/classes/下,如圖bb.xml
3 對於module中關鍵的dependency問題,即依賴包,在maven 項目里,在src/main/webapp/inf/lib中是不需要加入jar包,因為maven已經自動管理,運行時會從本地倉庫讀取,同時src/main/webapp/inf/classes文件夾中也是沒有內容,項目編譯輸出可以根據module中path的默認設置在target下,因此src/main/webapp/inf/classes文件夾為空。 當我們在artifacts中對項目進行打包成exploded war時,若選擇在項目的src/main/webapp下輸出,則idea會把target/classes中的編譯文件,包括class文件和xml配置文件等都拷貝一份到src/main/webapp/inf/classes目錄下,這是該目錄才有值,正常編譯時沒有內容(默認編譯目錄在target下),lib文件也為空,tomcat根據src/main/webapp下打包成exploded war進行加載時,可以做到實時更新對jsp文件熱部署。
4 在編譯之后,即可在target中生成classes編譯目錄,mvn package命令后,會生成項目名/wen-inf和meta-inf的web APP文件,並且對該文件進行war打包,(需要再pom.xml中配置<packaging>為war,默認為jar),在idea中可以對war文件或target下目錄文件進行部署,也可以對artifacts中的exploded war文件進行部署,之后exploded war 文件部署在webapp下時,可實現實時呈現,前兩個都需要重新package,重新部署才可。
這樣就可以正常部署項目了,以上都是自己實踐得來,如有錯誤或者不當之處,歡迎指正。