国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

香港云服务器
服務器之家 - 編程語言 - Java教程 - 玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

2021-01-28 01:25BAT的烏托邦YourBatman Java教程

本文繼續理解IDEA對項目、模塊的管理。管理項目是一個IDEA的基本功能,但往往最基礎的是最重要的更是最容易被忽略的。因此本文是你更好去理解IDEA管理maven結構、gradle結構、Spring Boot項目結構的基礎,萬丈高樓平地起,它就是這

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

你好,我是A哥(YourBatman)。

如何給Module模塊單獨增加依賴?如何知道哪些Module模塊用了Spring框架,哪些是web工程?IDEA如何打Jar包?打War包?

熟練的正確使用IntelliJ IDEA,是一個“高手”該有的樣子,因為那是你的門面。上篇文章 重點介紹了IDEA里最為重要的兩個概念:Project項目和Module模塊。相信你看完后再也不會把IDEA的Project比作Eclipse的Workspace,并且對IDEA有了一份更深的了解。

本文繼續理解IDEA對項目、模塊的管理。管理項目是一個IDEA的基本功能,但往往最基礎的是最重要的更是最容易被忽略的。因此本文是你更好去理解IDEA管理maven結構、gradle結構、Spring Boot項目結構的基礎,萬丈高樓平地起,它就是這個地基。上層結構再怎么繁繁多變,殊途同歸最終都由Project Structure來體現,從而給開發者以幾近相同的編碼體驗。

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

本文提綱

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

版本約定

IntelliJ IDEA:2020.3.1

正文

Project Structure是一個你開發過程中偶爾/經常會打開,但卻很少用心留意的窗口。不同于一般設置窗口,它和項目的緊密度非常的高且有一定理解難度,若設置不當項目可能無法運行甚至無法編碼(比如編譯報錯、jar包找不著等),為此我做件一般人都不愿意做的事,對它進行詳解,相信做難事必有所得。

本文基于上文已搭建好的hello項目案例,繼續研究其項目結構Project Structure的管理。從結構查看,到修改定制,那么問題來了,如何打開一個Project項目的結構頁呢?

如何打開Project Structure?

看似一個簡單的操作,里面其實蘊藏著你對IDEA Project和Module的理解,否則勢必不知從哪下手。據了解,也許你是多年的程序員,也未必知道從哪下手。

按照一般思維,會鼠標選中hello,然后右鍵:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

但對不起,右鍵菜單里并無Project Structure選項。Project Structure顧名思義,是針對Project維度的結構視窗,而你鼠標選中的hello只是個module,所以自然彈出的是對此module的操作菜單嘍,而非Project的。也許你可能會講:我點擊了Open Module Settings也打開了Project Structure視窗呀,是的效果上你可能是打開了但道理并非如此,而僅僅是因為把它倆放在了一起(同一視窗)而已。

  • ?說明:理解IDEA的Project和Module兩大概念,是對IDEA進行一切操作的基礎。前文已非常詳細(可能是全網最全)的介紹了它倆,可花幾分鐘前往學習。點這里電梯直達?

三種打開方式

要打開一個Project的結構展示窗口,至少有如下三種辦法,本文都例舉給你。

1.頂部菜單File -> Project Structure

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

2.點擊右上角的快捷按鈕

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

3.快捷鍵方式(推薦)

這是我本人最喜歡的方式,至于快捷鍵是哪個就看你是如何設定的嘍,我的快捷鍵是ctrl + shift + alt + s。

  • ?啰嗦一句:建議你操作IDEA多用快捷鍵,那會大大提高編碼的效率,并且看起來像高手。基本上記住50個左右快捷鍵就夠用了,長期以往成了肌肉記憶后這就是你的核心競爭力之一了?

打開hello項目的結構頁如下圖所示:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

解釋:為何不需要鼠標選中項目?

對于這個動作,敏感的你是否有發現:打開項目結構并不需要鼠標選中任何東西(快捷鍵隨意使用),也就是說鼠標失焦狀態都沒問題,何解呢?

回答這個問題并不難,前提是你已經對IDEA的Project概念爛熟于胸。一個Project對應一個視窗,它們是嚴格1:1的關系。換句話講,當前視窗就代表著Project,因此操作本視窗頂部菜單欄就肯定是作用在該Project上,又何須專門選中什么呢?再者,Project只是個邏輯概念,你想選都沒得選中的,所以把視窗當作它就好。有沒有覺得,這和Java中的this關鍵字調用特別像?

最后,這個問題的答案是:只要鼠標還在IDEA視窗內(該視窗是活躍窗口),那么對Project就永遠就是“選中”狀態。

Project Structure項目結構剖析

項目結構視窗已打開,那接下來重點來嘍。可以看到它左邊的“菜單欄”,共分為三個part:

  • Project Settings:項目設置(最重要),本文詳解
  • Platform Settings:平臺設置,也叫全局設置。用于管理SDK們(如JDK、Kotlin的SDK等)、全局庫。

一般來講,全局的JDK都會配置在此處,比如我因為經常要做多版本嘗試,就管理了多個JDK版本

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定
  • Problems:問題。一般項目出現了問題都會在此體現(如依賴不一致問題等等),總之問題數量一致讓它是0是最優的

其中Project Settings里面的每個標簽頁是最常用,最關心的。下面就對它的每個tab頁作出解釋和使用說明。

Project頁情況

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

此視窗可以看到Project本身的基礎信息。如:名稱、SDK版本、語言等級等等,比較簡單。

對于此頁面的元素,多啰嗦幾句:

1.為何是SDK版本而不是JDK版本?答:因為IntelliJ IDEA是JVM平臺IDEA,不僅僅支持Java還有其它語言如Kotlin,所以寫成SDK更抽象

2.為何指定了SDK還要指定語言等級?答:因為SDK版本并不直接決定語言等級。如你用的JDK 11,但依舊可以把語言等級調為8來進行編譯/運行

這是集成開發環境的優勢所在,輕松對多環境進行定制化支持

3.SDK和語言等級Project都可指定,作為全局默認

這些配置Module默認集成,但可自行修改自己的。比如module 1使用Java 5編譯,module 2使用Java 11編譯,這是允許的

Module頁情況

Module頁可謂是重點中的重點,甚至是最重要。畢竟Module作為實際存在形式,所有的源代碼、配置、依賴等都在這里,因此大有可學呀。

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

值得注意:Tests測試包里面的是可以訪問Sources源碼的,但反過來不行。

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

每個模塊都能獨立管理著自己的依賴,這種關系在模塊自己的.iml文件中記錄著。

知識點:

  1. Project創建時默認會創建一個同名的Module模塊
  2. Module默認沿用Project的SDK、語言等級等設置,當然也可自己指定
  3. 每個Module可自行管理依賴,可以是二方庫、三方庫......
  4. 本模塊的依賴情況默認存儲在項目的{moduleName}.iml文件里

新增依賴

既然Module可以自行管理依賴,那么如何給該模塊新增依賴呢?

舉個例子,現在需要向hello模塊增加一個commons-io jar包依賴,可以點擊Dependencies標簽頁左下角的+號,選擇Library:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

然后選擇,如果沒有就選擇New Libarary...創建一個唄(有就直接用就成):

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

下面分別演示選擇Java和選擇From Maven兩種不同庫的方式:

新建Java依賴庫

New Library新建菜單選項中選擇Java選項:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

 
玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

這種方式簡單的講:從你本機里選擇一個jar(或者一個目錄里面包含jar、文檔)就成。優點是非常輕便,不依賴網絡,缺點是這些jar必須是你本機已實際存在的。

新建Maven依賴庫

New Library新建菜單選項中選擇From Maven選項:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

輸入GAV(或者關鍵字查找)就能定位到jar,此種方式使用起來其實非常方便,畢竟maven非常好用嘛。缺點自然就是一般情況下需要都需要依賴于網絡嘍,除非你本地倉庫已存在對應的jar。

通過這兩種方式各執行一次添加新的依賴完成后,再看hello模塊的依賴情況,效果如圖:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

既然依賴變化了,自然而然的也會體現在hello.iml文件里嘍,來看看:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

依賴添加進來,源代碼里就可以正常使用啦:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

依賴作用范圍

在New Library創建依賴的時候,不管用哪種方式選中后,它都會彈出這個窗口讓你選擇此依賴的作用范圍

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定
  • Module Library:模塊級別,只能本模塊使用,別的模塊看都看不見
  • Project Library(默認選中):項目級別,該項目下所有的模塊均能看見和選中使用
  • Global Library:全局級別,任何項目均可看見和使用

在本例中commons-io是模塊級別,commons-lang3是項目級別。因此hello-client模塊添加依賴時也是能夠看到commons-lang3這個依賴的(但看不見commons-io):

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

Libraries頁情況

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

當某Library是所有/大部分模塊都需要的依賴時,就可以上升為Project級別的依賴,抽取到Libraries標簽頁來統一管理。如圖,因為上面步驟創建的commons-lang3是項目級別的,所以也會出現在這里。

至于如何創建/添加Project級別的依賴,這里就不用再贅述了吧,上面【新增依賴】章節已講得很明白。唯一區別在該頁面選好后不用再選擇Library的作用范圍了(因為就是Project級別的嘛),取而代之的是讓你選擇作用的模塊:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

當然嘍,你也可以一個都不選(點擊cancle),那么該jar只是被創建了,而不作用于任何module模塊。

  • ?說明:對于一個多模塊的Project來講,建議項目使用的所有Jar都放在這里統一管理,模塊要使用時直接按需choose就成,而不需要自己再單獨add,方便統一管理?

Facets頁情況

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

Facets可理解為用于配置Project項目的框架區,它能看到項目的每個Module模塊使用的框架、語言等情況,并且還可以對它們進行配置。

比如Spring框架,如果某個模塊使用了它就可以來這里統一配置。優點是你會發現借助IDEA強大的功能它都給你想好了哪些地方可配置,你可以更改,讓你實現配置界面化。除了Spring,其它框架如Hibernate也是如此~

目前支持的Facets(語言/框架)類型有:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

模塊對應的Facets IDEA會自動Detection探測,若沒有你也可以手動添加。

為了更形象的描述此tab頁的作用,這里搬一個我自己生產項目來看看實際效果:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

說明:不同的Facet對應的最右端窗口內容配置項是不一樣的。

通過此視窗,可以看到你當前Project項目,哪些模塊使用了Spring框架,哪些是web項目,一目了然。它有個非常大的作用就是站在Project的視角對每個模塊進行整體把控,比如若你發現有個模塊不需要是web項目(并不需要對外提供服務接口),那鐵定就是多引包了或者職責不清晰導致的,就可立馬針對性解決,消除隱患。

在實際工作中我自己比較頻繁的使用這個功能,用于對模塊性質的定位,比如如果是普通模塊,絕對不允許是web工程,如果不需要依賴Spring絕對不允許成為Spring工程。因為嚴格控制Jar包依賴、工程性質是應對大型項目的有效手段。

當然嘍,Facets還有個作用是讓IDEA編譯器認識你的模塊,比如如果你是個web模塊,若沒有在Facets里體現出來,那IDEA就不認識你,就無法給你提供web的一些便捷操作了。

Artifacts頁情況

IDEA如何打Jar包?如何打War包? 來,上菜~

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

在Maven大行其道的今天,雖然用IDEA打包很少使用了,但是有些時候它對你本地調試還是蠻有用的,并且對理解maven的打包依舊有效,來,了解一下。

Artifacts這個概念不是特別好理解,artifact是maven里的一個概念,被IDEA借鑒過來。表示某個模塊要何種打包形式,如jar、war exploded、war、ear等等。Artifact是一個項目資源的組合體,整合編譯后的 java 文件,資源文件等。有不同的整合方式,比如jar、war、war exploded等等,對于一個module而言,有了Artifact就可以部署了,類似于maven的package打包。

  • ?說明:war 和 war exploded區別就是后者不壓縮,開發時選后者便于實時看到修改文件后的效果?

來個栗子,這里演示下將hello模塊打包成一個Jar:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

配置好后,只需頂部菜單欄Build -> Build Artifacts,就可以打出這個Jar包:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

執行完此命令后,在Output Directory里就能看到hello.jar這個打包好的文件啦。然后java -jar .\hello.jar就能運行嘍(因為咱們打的是可執行Jar包)。關于使用IDEA打包還包括打可執行jar包、Fatjar、包外引用jar包等等,這里就不展開了,后面會放在單獨文章里把各種方式匯總在一起聊聊。

總的來說,無論配置Facets還是Artifacts,都是Intellij IDEA要求我們來做的(雖然有些可自動識別),目的是以便其能識別這些文件并整合各插件實現功能(如自動化配置、自動打包),一切為了編碼體驗和編碼效率。

模塊如何依賴其它Module

一個中大型項目一般有多個模塊,它們各司其職。模塊與模塊之間一般都存在依賴關系,比如常見的xxx-core模塊一般會被其它幾乎所有模塊所依賴。模塊依賴外部庫Library知道怎么搞了,那么如何增加本項目的模塊依賴呢?

其實道理和步驟基本一樣,比如hello-core模塊里有個Person類:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

hello-service模塊也需要用到Person類及其功能,那么就需要把hello-core模塊依賴進來,操作步驟如下:

添加Dependency依賴時,請選擇Module Dependency...選項:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

選擇本項目中需要依賴進來的模塊:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

選中hello-core模塊把它依賴到hello-service里來:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

點擊ok,搞定了。對應的,此依賴關系也會體現在hello-service.iml這個配置文件上:

玩轉IDEA項目結構Project Structure,打Jar包、模塊/依賴管理全搞定

如此,我們就可以在hello-service模塊里正常使用Person類啦:

public static void main(String[] args) { 

    System.out.println(new Person()); 

完美。

總結

本文對IntelliJ IDEA的項目結構Project Structure的每個tab頁進行了全面分析,據我短淺的目光所及,可能是全網獨一份寫這個內容的。很多同學覺得IntelliJ IDEA不需要專門的學習分析,會用它導入maven項目,跑跑main函數啟動下Spring Boot就成啦,我卻不以為然。

衡量一個新手和一個高手的差異不是順風順水時,而是遇到問題時誰能夠快速解決,誰又只能望洋興嘆,相信薪資的差異也體現在此。我見過的“高手”對自己最常用的工具用得都是很666的,這不正是技術范該有的樣子麼?說到底,我們不可能認為用一指禪敲代碼的人會是大牛嘛~

好啦,關于IDEA的話題暫且先聊到這。其實我想到的主題還有好幾個,如:

  • IDEA如何主動去識別導入不能被自動識別的Maven項目?原理是什么呢?
  • IDEA如何打可執行Jar包?又如何打FatJar?如何打 包外Jar包(散包) 呢?
  • IDEA如何巧用其最新的Http Client腳本能力,結合對Controller的嗅探快速完成本地測試?
  • ......

本文思考題

本文已被https://www.yourbatman.cn收錄。

 

原文地址:https://mp.weixin.qq.com/s/j_yIiXvNlp7JMZaVO1FSrA

延伸 · 閱讀

精彩推薦
821
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 国产精品影院在线观看 | 国产美女精品 | 久久av综合网 | 亚洲精选一区二区 | av片免费看| 国产美女久久 | 亚色一区 | 黄色在线 | 精品亚洲一区二区三区四区五区 | 久久妇女 | 欧美日韩国产精品一区二区 | 亚洲成人久久久久 | 日韩美女乱淫aaa高清视频 | 日韩一区二区视频 | 亚洲福利 | av成人免费| 亚洲美女久久 | 国产精品69毛片高清亚洲 | 中文字幕色 | 国产欧美精品一区二区色综合 | 国产成人精品一区二区三区四区 | 久久久精品 | 精品久久久久久久 | 欧美午夜一区二区三区免费大片 | 一级录像免费录像在线观看 | 视频一区 国产精品 | 91嫩草视频在线 | 欧美成人免费在线视频 | 久久伊99综合婷婷久久伊 | 国产精品一区二区不卡 | 免费在线看a | 欧美精品一区二区三区在线 | 毛片特级 | 国产高清在线不卡 | 亚洲人成网站999久久久综合 | 精品在线视频一区 | 激情五月综合网 | 日韩成人在线播放 | 欧美日韩精品一区二区在线观看 | 久久国产精品久久喷水 | 99伊人网 |