Idea這款開發工具的便利之一是不少配置項幾乎可直接使用默認項。但針對不一樣的項目不免須要針對性的配置,本文帶你們詳細的梳理一遍Project Structure中各項功能,注意收藏,以備不時之需。web
先說一下寫本文的原因,在項目中用Idea中打開一組SpringBoot項目,結果編譯的結果和日誌輸出的地方與預期不一致,因而仔細研究了Project Structure的配置項,發現此處居然有不少有用的功能,彙總分享給你們。spring
Project Structure即「項目結構」,它幾乎涵蓋了一個項目全部的個性化的配置項,包括Modules,Facets,Libraries, Artifacts和SDK等板塊的功能。springboot
開啓項目結構配置有兩種方式,一種方式是點擊上圖①位置的圖標即可直接打開相關的配置界面。微信
另一種方式即是經過快捷鍵打開。Windows操做系統,默認快捷鍵爲「Ctrl+Shift+Alt+S」;Mac操做系統默認快捷鍵爲「command + ;」組合。網絡
第一種方式若是找不到對應配置,教你們一個使用Idea時的一個大招:「Help」搜索。jsp
點開Help菜單,輸入Project關鍵字進行搜索,默認會匹配到全部與Project關鍵字相關的選項,當鼠標移動到對應結果上時,左邊會自動顯示對應內容所在的菜單位置,固然你也能夠直接點擊打開。maven
不只此處能夠如此操做,大多數操做均可以如此,是否是用起來很是爽!工具
通常狀況下,打開以後第一個默認選中的顯示內容即是Project了。重點看一下圖中的一、二、三、4項。學習
第一項,Project name,項目名。就我的而言,通常會將此處的項目名與項目目錄名和pom文件中的name三處保持一致。避免不一致,同時也避免IDEA在左側會顯示多個名稱標識。開發工具
若是打開的是一組項目,好比都說springboot的項目,此處本人會改成相似springboot-all這樣的名稱,而不是其中一個(默認是第一個)項目的名稱。
第二項,Project SDK。配置項目的SDK使用,這項平時使用的比較多,好比新打開一個項目,要查看一下SDK版本是否與預期的一致。也能夠在右邊的Edit進行SDK的編輯。
此處點擊編輯會跳到Platform Settings中的SDKs處進行操做。此處看一下圖,操做比較簡單,就不展開了。
第三項,Project language level。選擇要支持的Java語言級別。若是是多個Module(能夠理解爲一組項目)的話,對全部Module生效。
不一樣的JDK版本選擇,對代碼的語法有必定的影響,好比選擇JDK8之前的版本,那麼代碼中有基於Lambda的語法將會報錯。目前使用最多的當屬JDK8了,固然若是你的項目比較古老或比較新,也能夠選擇其餘的版本。
第四項,Project compiler output。指定IntelliJ IDEA將存儲編譯結果的路徑。
開篇時說的問題就在此。針對單個項目,能夠在配置一個輸出路徑,同時也能夠在後面提到的Module中進行獨立配置。
但對於多個Module項目時,會出現你們共用一個output目錄。此時若是輸出的日誌文件路徑用「./log」這種形式時,日誌可能並不會打印到其中的子項目中,而是輸出在此處指定的路徑下了。
Modules中的配置用的比較多的狀況就是一組項目時,能夠配置獨立每一個項目的參數。包括項目名稱,目錄結構,輸出路徑,依賴等。
下面分析一下圖中標註的四項內容,其中第三和第四項屬於Source選項的子項。
第一項,加號能夠導入、新增各種Module項目,固然後面的減號能夠移除對應的項目。
第二項,項目名稱,使用方式與前面的一致,也一樣建議多處保持一致。
第三項,JDK版本,與Project中同樣,但此處針對的是當前Module。
第四項,項目目錄結構。對Module的開發目錄進行文件夾分類,不一樣類型的文件進行指定的文件類型。上面分了Sources、Test、Resources、Test Resources、Excluded。
顧名思義,Sources放的是Java源碼,Test放的是測試的源碼,Resources放的是資源文件,Test Resources放的是測試使用的資源文件,Excluded是排除項(好比編譯後的trarget目錄)。
此處使用比較多的場景是新增文件夾。右擊一個頂層目錄,彈出「New Folder」建立目錄,隨後能夠對新增的文件夾進行類型指定。常見的狀況好比建立的項目沒有test或Test Resources,可在此處進行添加目錄,而後指定目錄類型。
與Sources選項平級的還有Paths和Dependencies。這兩項操做都比較簡單,Paths用來指定編譯輸出路徑。
通常採用默認值便可。其中,Inherit projecty compile output path繼承項目編譯輸出路徑,使用爲項目指定的路徑。即在Project選項中設置的out文件路徑。
Use module compile output path,使用模塊編譯輸出路徑;Output path爲編譯輸出路徑;Test output path爲測試代碼編譯輸出路徑。
下面的JavaDoc使用可用控件組合與模塊關聯的外部JavaDocs存儲位置的列表。不經常使用,就不具體演示了。
另一個是Dependencies,主要配置jar包依賴相關的內容。
這裏一樣能夠配置JDK,還能夠經過下面的加號引入其餘依賴,同時還能夠配置對應jar包所對應的Scope。
上面講解了多處JDK配置的選項,若是在實戰過程當中出現JDK版本修改或不一致的問題,建議從頭至尾查看一下各處JDK的版本是否有問題。
Libraries選項卡里,能夠定義模塊SDK並造成模塊依賴關係列表。
經過加號裏面的操做能夠建立一個新的項目庫,能夠設置分類,能夠刪除等操做。
Facets選項主要用來表示module的特徵,好比Web、Spring、Hibernate等。
上圖以Spring Boot項目爲例,可看到項目的配置文件、啓動類、MVC等相關特性。若是是web項目,還能夠看到下面的一些信息(圖片來源於網絡)。
Artifact是maven中的一個概念。這裏表示module打包成什麼形式,好比:war exploded、war、jar等;
這種形式在基於SpringBoot項目時不多使用了,基於Web打war包的形式時使用的比較多。
其中web項目有exploded類型,這裏可理解爲不歸檔的意思,也就直接把文件夾、jsp頁面、classes進行部署到容器裏面。建議在開發時使用此模式,便於熱部署。
默認狀況下,IDEA的Modules和Artifacts的output目錄 已設置好,不須要更改。打war包時會自動在WEB-INF目錄下生成classes目錄,並把編譯後的文件放進去。
關於其餘選項就很少說了,不太經常使用。其中,SDKs選項爲系統開發工具,全局SDK配置,新增JDK版本什麼的均可以在此配置。Global libraries是全局類庫,能夠配置一些經常使用的類庫。Problems在項目異常的時能夠根據提示進行項目修復(FIXED)。
因項目實戰過程當中的一個問題,研究拓展出整個Project Structure相關的知識體系,這也是一個思惟和學習的模式。關注公衆號「程序新視界」,爲你提供更多相似的實戰經驗和知識積累。
<center>程序新視界:精彩和成長都不容錯過</center>