1. 程式人生 > 程式設計 >一文秒懂IDEA中每天都在用的Project Structure知識

一文秒懂IDEA中每天都在用的Project Structure知識

Idea這款開發工具的便利之一是很多配置項幾乎可直接使用預設項。但針對不同的專案難免需要針對性的配置,本文帶大家詳細的梳理一遍Project Structure中各項功能,注意收藏,以備不時之需。

先說一下寫本文的緣由,在專案中用Idea中開啟一組SpringBoot專案,結果編譯的結果和日誌輸出的地方與預期不一致,於是仔細研究了Project Structure的配置項,發現此處竟然有很多有用的功能,彙總分享給大家。

Project Structure即“專案結構”,它幾乎涵蓋了一個專案所有的個性化的配置項,包括Modules,Facets,Libraries, Artifacts和SDK等板塊的功能。

在這裡插入圖片描述

開啟專案結構的方式

開啟專案結構配置有兩種方式,一種方式是點選上圖①位置的圖示便可直接開啟相關的配置介面。

另外一種方式便是通過快捷鍵開啟。Windows作業系統,預設快捷鍵為“Ctrl+Shift+Alt+S”;Mac作業系統預設快捷鍵為“command + ;”組合。

第一種方式如果找不到對應配置,教大家一個使用Idea時的一個大招:“Help”搜尋。

在這裡插入圖片描述

點開Help選單,輸入Project關鍵字進行搜尋,預設會匹配到所有與Project關鍵字相關的選項,當滑鼠移動到對應結果上時,左邊會自動顯示對應內容所在的選單位置,當然你也可以直接點選開啟。

不僅此處可以如此操作,大多數操作都可以如此,是不是用起來非常爽!

Project配置項

一般情況下,開啟之後第一個預設選中的顯示內容便是Project了。重點看一下圖中的1、2、3、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配置項

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選項配置

Libraries選項卡里,可以定義模組SDK並形成模組依賴關係列表。

在這裡插入圖片描述

通過加號裡面的操作可以建立一個新的專案庫,可以設定分類,可以刪除等操作。

Facets選項配置

Facets選項主要用來表示module的特徵,比如Web、Spring、Hibernate等。

在這裡插入圖片描述

Artifacts選項配置

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相關的知識體系,這也是一個思維和學習的模式。關注公眾號“程式新視界”,為你提供更多類似的實戰經驗和知識積累。

到此這篇關於一文秒懂IDEA中每天都在用的Project Structure知識的文章就介紹到這了,更多相關IDEA Project Structure內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!