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

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

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

服務器之家 - 編程語言 - Java教程 - 誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

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

本文將著眼于幫你深入的介紹IntelliJ IDEA里最重要的兩個概念:Project和Module,它是最最最基礎也是最重要的,我認為本文不僅適合使用IDEA的萌新,同樣適合使用IDEA的“老手”(曾經eclipse的重度用戶尤甚)。

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

 前言

你好,我是A哥(YourBatman)。

有一個觀點:若一個Java開發者能把IDEA玩得666,則技術一定不會差;但若玩不轉IDEA(如不會設置、定制、解決日常問題、快捷鍵等等),那大概率水平很一般。因為高手一般得有高手的樣子,你同意這個觀點嗎?

通過上篇文章 你也了解到,現今的Javaer絕大部分都使用IntelliJ IDEA作為IDE進行開發,但同時發現(從身邊同事調查)大部分同學都并不能很好的使用IDEA,其中表現最為突出的是IDEA里的ProjectModule兩個概念,混淆不清或者概念完全扭曲。

A哥是一個相對來講很注重基礎知識搭建的Javaer,所以對于最常用的工具也是如此,愿意花些時間去搞明白,包括頁布局、功能定制、插件、以及快捷鍵都會調為自己最順手的狀態,畢竟工欲善其事,必先利其器。

本文將著眼于幫你深入的介紹IntelliJ IDEA里最重要的兩個概念:Project和Module,它是最最最基礎也是最重要的,我認為本文不僅適合使用IDEA的萌新,同樣適合使用IDEA的“老手”(曾經eclipse的重度用戶尤甚)。

本文提綱

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

版本約定

  • IntelliJ IDEA:2020.3.1

正文

IntelliJ IDEA相較于Eclipse可謂是后起之秀,2006年開始嶄露頭角,2012年整體性能上完敗Eclipse,2016年市場份額完成全面超越,一步步的逐漸成為JVM平臺的主流IDE。

正是由于有這樣的歷史進程,有大批“老”程序員是從Eclipse過度到IDEA來的,因此就有了一個頗具代表性的概念對比表格,方便“遷移”:

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

誠然,IntelliJ IDEA的使用成本比eclipse略高,在那樣的歷史背景下,這張表格確實降低了“老”程序員們的遷移過度成本,即使現在看來這張表格的描述并不準確,設置具有極大的誤導作用(副作用開始展現......)。

IDEA和eclipse的概念類比上,最“著名”的當屬把IDEA的Project比作Eclipse的Workspace,回憶下你當初是不是經常聽到這樣的聲音?博客文章這樣說、培訓機構老師這樣說、甚至大學的老師也是教你這么去理解的。更有甚者,對于很多“中毒”很深的、曾經的eclipse用戶來說,他們是這樣使用IDEA的:

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

實現了所謂的:IDEA在同一窗口顯示多個項目。若你發現你身邊有這么樣管理項目的同事,那么他是你的“前輩”沒跑了,因為鐵定是eclipse的資深用戶,然后遷移到IDEA來。

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

這種做法是錯誤的,毫不相干的項目(遠程調用不叫有關系)沒有理由放在同一視窗內,除了干擾還是干擾。Eclipse里有workspace工作空間的概念尚可理解,可IDEA里是絕對不要這么做。

在 IntelliJ IDEA 中,沒有類似于 Eclipse 工作空間(Workspace)的概念,而是提出了Project和Module這兩個概念。本文來告訴你,IntelliJ IDEA是如何管理項目Project、模塊Module以及它倆關系,看完之后你會發現單這一點IntelliJ IDEA就比Eclipse優秀得多。

Project和Module概念

什么是Project

Eclipse中一個Workspace可以包括多個Project,而在IDEA里Project是頂級概念。

Project(翻譯為:項目)IntelliJ IDEA的頂級組織單元,它是個邏輯概念。一般來說一個Project代表一個完整的解決方案,如它可包含多個部分,如:

  1. 源代碼
  2. 構建腳本
  3. 配置文件
  4. 文檔
  5. SDK
  6. 依賴庫
  7. ...

也就是說Project是個完整體,是個資源的集合,扔到任何地方都是可以被解釋的。

?說明:建議把Project翻譯為項目,而非工程,不在一個維度。因為一個module其實也可以理解為一個工程,避免混淆?

什么是Module

模塊是是項目Project的一部分,必須隸屬于Project而存在。它可以獨立編譯、測試、運行甚至部署。

模塊是分而治之思想的體現,是降低大型項目復雜度的一種有效手段。模塊是可重用的,若需要,一個模塊可以被多個模塊引用,甚至多個Project項目引用(比如commons模塊)。

此處強烈不再建議你把Eclipse的Workspace引入進來做類比,那只會把你帶跑偏了。細品這兩個概念定義,總結一下:

1.在IDEA中,Project項目是最頂級的結構單元,一個IDEA視窗有且只能代表一個Project

現在知道為何把user、account、order扔到一個視窗里有多么的不合適了吧

2.一個Project由一個or多個Module模塊組成,對于大型項目來講一般會有N多個module組成,如dubbo項目結構如下圖所示:

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

3.一個module模塊里,依舊可以有子模塊,曾經可無限延伸(但不建議太多)

4.Project是個邏輯概念,Module才是最終的存在形式

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

錯誤使用

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

優點:

1.一個窗口,能看見全貌

弊端

2. 視窗功能不單一。account、order、user屬于不同項目,是為了解決不同問題而存在,沒有理由放在一起 3. 干擾性太強。比如他們三都有類叫ProcessService,那么在你查找的時候永遠無法“精確定位”

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

3.額外性能開銷。比如你只想開發user,但還得把其它的加載進來,完全沒有必要嘛。

說明:idea不能像eclipse一樣close project的,畢竟人家那是workspace的概念,而idea同一視窗屬于同一項目,總不能說關閉某個模塊吧,模塊一般相關性很強,完全沒必要單獨開/關

想一想,若你一個人負責了20+個項目,每次打開是不是得花上個幾分鐘呢?

4.概念上混亂。這么放在一起,其實就不是user項目、order項目了,而是user模塊、order模塊,很明顯概念上就不準確了

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

正確使用

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

這種使用方式界面清爽,運行流暢,解決了上面錯誤方式的所有弊端。

新建項目Project

萬丈高樓平地起,使用IDEA的第一步一定是新建一個項目Project:

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

或者你也可以在視窗內部新建,頂部菜單欄File -> New -> 三選一:

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

三種創建方式:

  1. 創建一個全新項目
  2. 打開現有項目
  3. 從VCS版本控制系統里clone一個項目

本文就以1為例,因為2和3從本質上講都叫打開項目,并不會經歷創建流程。下面我們按步驟走一篇創建流程:

第一步:選擇創建項目的方式,本文選擇創建創建Java項目

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

第二步:選擇根據模版創建項目。這個在maven還沒出現之前挺有用,現在幾乎不用了,因此一般都不勾選

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

第三步:填寫項目名、項目位置(以及同步創建的模塊名、位置等,可選)

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

①:項目存儲位置,一般作為整個項目的根目錄

②:內容根目錄

③:模塊文件存放的目錄

④:項目格式文件(IDEA負責識別,后面它還會出鏡)

More Setttings選項默認是收起狀態,也就是說大多數情況下創建時你并不需要修改同步創建的模塊的這些信息,而實際上也確實是這么干的。

點擊Finish,IDEA **100%**就會在新窗口(或者覆蓋本窗口)打開新創建的這個項目:

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

該項目在硬盤里的表現形式僅僅是一個文件目錄而已:

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

.idea文件夾的作用

每個Project項目都對應1個 .idea文件夾(隱藏目錄),該項目所有特定設置都存儲在該.idea文件夾下,比如項目模塊信息、依賴信息等等。

一般來講它里面會有這些文件/目錄:

  • misc.xml:描述該項目一些混雜信息,如SDK、語言等級、項目輸出的目錄等等
  • modules.xml:描述該項目有哪些Module模塊
  • workspace.xml:描述視窗的信息。如Project窗口在左邊還是右邊,窗體大小,顏色,是否隱藏,滾動情況等等(每個Project都允許你個性化配置,規則都被記錄在這個文件里)
  • vcs.xml:使用的VCS工具信息,如Git

除了這些,一些插件也經常會往這個目錄增加文件,如:

  • saveactions_settings.xml:saveaction插件的專屬配置文件
  • jarRepositories.xml:遠程倉庫配置文件
  • encodings.xml:描述模塊文件夾編碼信息的配置文件
  • compiler.xml:描述每個module模塊使用的編譯器信息的文件。如使用1.8編譯,是否加了編譯參數-parameters等等都在這里體現

總的來講,這個文件夾里面的東西不用關心,由IDEA/插件自己自動維護,我們只需要界面化操作即可。當然嘍,若了解一二對于定位一些常見問題(如不知-parameters是否生效)是有幫助的。

新建模塊Module

創建好一個Project默認會有一個同名的的module(Empty Project除外),如果項目比較小復雜度較低,一個模塊足矣。但是,稍微有點復雜性的項目一般都希望進行模塊拆分,建立多個模塊,分而治之。比如:

  • hello-service:實現核心業務功能處理
  • hello-persistence:復雜持久化工作
  • hello-client:作為客戶端暴露出去

第一步:頂部菜單欄給該項目創建模塊

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

當然還有一種方式是在Project Structure里創建(這個咱們下篇文章再聊):

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

第二步:選擇該模塊類型,可以是Java項目、maven項目、Kotlin項目等等都行

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

第三步:給模塊命名,并制定該module模塊的存在位置。一般來講只需要寫名稱即可,模塊的路徑默認會放在project目錄的子目錄下

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

關于目錄選擇再強調一遍:默認情況下模塊路徑會在Project(或者父模塊)的子目錄下,但這并不是必須的,你也可以改為和Project的同級目錄也是可以的,邏輯上依舊屬于Project的模塊,不會有問題。但一般建議保持這種層級關系而不要修改~

  • ?若是父子目錄,層級關系更明顯些,否則是一種plat平鋪目錄關系,看著會不太“舒服”?

點擊Finish,在Project視窗就可以看見該模塊啦(層級結構展示哦):

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

這個時候的Project - Module層級結構圖是這樣子的:

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

這時我就拋出一個問題,若要實現下圖這種層次結構(plat全部平級),新建模塊時需要注意些什么呢?

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

模塊創建好后,這時再看看.idea這個文件夾里的modules.xml,內容為:

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

xxx.iml文件的作用

每個Module模塊都對應一個同名的 .iml文件,用于描述該模塊的相關信息。如:SDK、語言等級、依賴、源代碼所在位置、輸出路徑等等。

總結

本文主題是介紹IDEA的Project和Module兩個重要概念,然后再通過具體示例的方式加深理解,講的還是比較清楚的(可能是全網最清楚的?),希望可以幫助到你加深對IDEA的理解,再也不要把IDEA的Project比作Eclipse的Workspace。

簡單總結一下本文內容:

  • Project是一個不具備任何編碼設置、構建等開發功能的概念,主要作用就是起到一個項目定義、范圍約束的效果(比如user項目,里面所有內容應該是為了解決user問題而存在的),你也可以理解它就是一個目錄,然后這個目錄的名字就代表項目名
  • Module模塊是代碼的實際表現形式。在默認情況下,一個Project對應一個Module,它倆“合二為一”,對于中大型項目來說,一般都會使用多模塊編程

下篇預告:在IDEA中,對項目結構Project Structure的設置尤為重要,下篇就為你剖析該頁面每個tab選項,到底如何玩轉它,具備一個高手的樣子,這對你理解Maven項目也將非常非常有幫助,敬請關注

誰再把IDEA的Project比作Eclipse的Workspace,我就跟誰急

本文思考題

看完了不一定懂,看懂了不一定會。來,文末3個思考題幫你復盤:

  1. IDEA的Project和eclipse的workspace的本質區別在哪里?
  2. 如何給Project/module單獨添加依賴庫?
  3. IDEA模塊的.iml文件有什么作用?

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

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 国产高潮久久 | 羞羞动漫在线观看 | 91欧美激情一区二区三区成人 | 亚洲国产一级毛片 | a国产在线 | 日韩在线观看中文 | 激情综合色综合久久综合 | 日韩一区二区在线电影 | 视频在线一区二区 | 韩日一区 | 欧美永久精品 | 午夜专区 | concern超碰在线 | 久久国产亚洲精品 | 欧美视频精品在线 | 欧美日韩第一页 | 欧美特级 | 性做久久 | 午夜资源 | 免费不卡视频 | 高清国产午夜精品久久久久久 | 91久久综合亚洲鲁鲁五月天 | 北条麻妃一区二区三区中文字幕 | 国产精品无码永久免费888 | 老妇60一区二区三区 | 精品一区二区久久久久久久网站 | 日韩精品一区二区在线观看 | 成人亚洲一区二区 | 免费观看一区二区三区毛片 | 青娱乐99 | 精品欧美| 国产色婷婷 | 国产精品18久久久 | 奇米成人| 久久久精品呻吟 | 午夜视频在线观看网站 | 一区二区国产精品 | 亚洲国产精品久久 | 精品久久久中文字幕 | 亚洲视频一区 | 欧美精品亚洲精品 |