一文秒懂IDEA中每天都在用的Project Structure知識
Idea這款開發(fā)工具的便利之一是很多配置項幾乎可直接使用默認(rèn)項。但針對不同的項目難免需要針對性的配置,本文帶大家詳細(xì)的梳理一遍Project Structure中各項功能,注意收藏,以備不時之需。
先說一下寫本文的緣由,在項目中用Idea中打開一組SpringBoot項目,結(jié)果編譯的結(jié)果和日志輸出的地方與預(yù)期不一致,于是仔細(xì)研究了Project Structure的配置項,發(fā)現(xiàn)此處竟然有很多有用的功能,匯總分享給大家。
Project Structure即“項目結(jié)構(gòu)”,它幾乎涵蓋了一個項目所有的個性化的配置項,包括Modules,F(xiàn)acets,Libraries, Artifacts和SDK等板塊的功能。
打開項目結(jié)構(gòu)的方式
開啟項目結(jié)構(gòu)配置有兩種方式,一種方式是點擊上圖①位置的圖標(biāo)便可直接打開相關(guān)的配置界面。
另外一種方式便是通過快捷鍵打開。Windows操作系統(tǒng),默認(rèn)快捷鍵為“Ctrl+Shift+Alt+S”;Mac操作系統(tǒng)默認(rèn)快捷鍵為“command + ;”組合。
第一種方式如果找不到對應(yīng)配置,教大家一個使用Idea時的一個大招:“Help”搜索。
點開Help菜單,輸入Project關(guān)鍵字進(jìn)行搜索,默認(rèn)會匹配到所有與Project關(guān)鍵字相關(guān)的選項,當(dāng)鼠標(biāo)移動到對應(yīng)結(jié)果上時,左邊會自動顯示對應(yīng)內(nèi)容所在的菜單位置,當(dāng)然你也可以直接點擊打開。
不僅此處可以如此操作,大多數(shù)操作都可以如此,是不是用起來非常爽!
Project配置項
一般情況下,打開之后第一個默認(rèn)選中的顯示內(nèi)容便是Project了。重點看一下圖中的1、2、3、4項。
第一項,Project name,項目名。就個人而言,一般會將此處的項目名與項目目錄名和pom文件中的name三處保持一致。避免不一致,同時也避免IDEA在左側(cè)會顯示多個名稱標(biāo)識。
如果打開的是一組項目,比如都說springboot的項目,此處本人會改為類似springboot-all這樣的名稱,而不是其中一個(默認(rèn)是第一個)項目的名稱。
第二項,Project SDK。配置項目的SDK使用,這項平時使用的比較多,比如新打開一個項目,要查看一下SDK版本是否與預(yù)期的一致。也可以在右邊的Edit進(jìn)行SDK的編輯。
此處點擊編輯會跳到Platform Settings中的SDKs處進(jìn)行操作。此處看一下圖,操作比較簡單,就不展開了。
第三項,Project language level。選擇要支持的Java語言級別。如果是多個Module(可以理解為一組項目)的話,對所有Module生效。
不同的JDK版本選擇,對代碼的語法有一定的影響,比如選擇JDK8以前的版本,那么代碼中有基于Lambda的語法將會報錯。目前使用最多的當(dāng)屬JDK8了,當(dāng)然如果你的項目比較古老或比較新,也可以選擇其他的版本。
第四項,Project compiler output。指定IntelliJ IDEA將存儲編譯結(jié)果的路徑。
開篇時說的問題就在此。針對單個項目,可以在配置一個輸出路徑,同時也可以在后面提到的Module中進(jìn)行獨立配置。
但對于多個Module項目時,會出現(xiàn)大家共用一個output目錄。此時如果輸出的日志文件路徑用“./log”這種形式時,日志可能并不會打印到其中的子項目中,而是輸出在此處指定的路徑下了。
Modules配置項
Modules中的配置用的比較多的情況就是一組項目時,可以配置獨立每個項目的參數(shù)。包括項目名稱,目錄結(jié)構(gòu),輸出路徑,依賴等。
下面分析一下圖中標(biāo)注的四項內(nèi)容,其中第三和第四項屬于Source選項的子項。
第一項,加號可以導(dǎo)入、新增各類Module項目,當(dāng)然后面的減號可以移除對應(yīng)的項目。
第二項,項目名稱,使用方式與前面的一致,也同樣建議多處保持一致。
第三項,JDK版本,與Project中一樣,但此處針對的是當(dāng)前Module。
第四項,項目目錄結(jié)構(gòu)。對Module的開發(fā)目錄進(jìn)行文件夾分類,不同類型的文件進(jìn)行指定的文件類型。上面分了Sources、Test、Resources、Test Resources、Excluded。
顧名思義,Sources放的是Java源碼,Test放的是測試的源碼,Resources放的是資源文件,Test Resources放的是測試使用的資源文件,Excluded是排除項(比如編譯后的trarget目錄)。
此處使用比較多的場景是新增文件夾。右擊一個頂層目錄,彈出“New Folder”創(chuàng)建目錄,隨后可以對新增的文件夾進(jìn)行類型指定。常見的情況比如創(chuàng)建的項目沒有test或Test Resources,可在此處進(jìn)行添加目錄,然后指定目錄類型。
與Sources選項平級的還有Paths和Dependencies。這兩項操作都比較簡單,Paths用來指定編譯輸出路徑。
一般采用默認(rèn)值即可。其中,Inherit projecty compile output path繼承項目編譯輸出路徑,使用為項目指定的路徑。即在Project選項中設(shè)置的out文件路徑。
Use module compile output path,使用模塊編譯輸出路徑;Output path為編譯輸出路徑;Test output path為測試代碼編譯輸出路徑。
下面的JavaDoc使用可用控件組合與模塊關(guān)聯(lián)的外部JavaDocs存儲位置的列表。不常用,就不具體演示了。
另外一個是Dependencies,主要配置jar包依賴相關(guān)的內(nèi)容。
這里同樣可以配置JDK,還可以通過下面的加號引入其他依賴,同時還可以配置對應(yīng)jar包所對應(yīng)的Scope。
上面講解了多處JDK配置的選項,如果在實戰(zhàn)過程中出現(xiàn)JDK版本修改或不一致的問題,建議從頭到尾查看一下各處JDK的版本是否有問題。
Libraries選項配置
Libraries選項卡里,可以定義模塊SDK并形成模塊依賴關(guān)系列表。
通過加號里面的操作可以創(chuàng)建一個新的項目庫,可以設(shè)置分類,可以刪除等操作。
Facets選項配置
Facets選項主要用來表示module的特征,比如Web、Spring、Hibernate等。
Artifacts選項配置
Artifact是maven中的一個概念。這里表示module打包成什么形式,比如:war exploded、war、jar等;
這種形式在基于SpringBoot項目時很少使用了,基于Web打war包的形式時使用的比較多。
其中web項目有exploded類型,這里可理解為不歸檔的意思,也就直接把文件夾、jsp頁面、classes進(jìn)行部署到容器里面。建議在開發(fā)時使用此模式,便于熱部署。
默認(rèn)情況下,IDEA的Modules和Artifacts的output目錄 已設(shè)置好,不需要更改。打war包時會自動在WEB-INF目錄下生成classes目錄,并把編譯后的文件放進(jìn)去。
其他選項
關(guān)于其他選項就不多說了,不太常用。其中,SDKs選項為系統(tǒng)開發(fā)工具,全局SDK配置,新增JDK版本什么的都可以在此配置。Global libraries是全局類庫,可以配置一些常用的類庫。Problems在項目異常的時可以根據(jù)提示進(jìn)行項目修復(fù)(FIXED)。
小結(jié)
因項目實戰(zhàn)過程中的一個問題,研究拓展出整個Project Structure相關(guān)的知識體系,這也是一個思維和學(xué)習(xí)的模式。關(guān)注公眾號“程序新視界”,為你提供更多類似的實戰(zhàn)經(jīng)驗和知識積累。
到此這篇關(guān)于一文秒懂IDEA中每天都在用的Project Structure知識的文章就介紹到這了,更多相關(guān)IDEA Project Structure內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
mybatis中<if>標(biāo)簽bool值類型為false判斷方法
這篇文章主要給大家介紹了關(guān)于mybatis中<if>標(biāo)簽bool值類型為false判斷方法,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用mybatis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08關(guān)于java入門與java開發(fā)環(huán)境配置詳細(xì)教程
這篇文章主要介紹了關(guān)于java入門與java開發(fā)環(huán)境配置詳細(xì)教程,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03SpringBoot中動態(tài)更新@Value配置方式
這篇文章主要介紹了SpringBoot中動態(tài)更新@Value配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-09-09SpringBoot如何配置MySQL和Oracl雙數(shù)據(jù)源(Mybatis)
這篇文章主要介紹了SpringBoot如何配置MySQL和Oracl雙數(shù)據(jù)源(Mybatis)問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-03-03金三銀四復(fù)工高頻面試題java算法LeetCode396旋轉(zhuǎn)函數(shù)
這篇文章主要為大家介紹了金三銀四復(fù)工高頻面試題之java算法題解LeetCode396旋轉(zhuǎn)函數(shù),有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-02-02全面解析Spring Security 內(nèi)置 Filter
這篇文章主要介紹了Spring Security 內(nèi)置 Filter的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-07-07