W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
這兩個概念是 IntelliJ IDEA 的必懂知識點之一,請務(wù)必要學(xué)會。
如果你是 Eclipse 用戶,并且已經(jīng)看了上面給的鏈接,那 IntelliJ IDEA 首先告訴你一個非常重要的事情:IntelliJ IDEA 沒有類似 Eclipse 工作空間(?workspace
?)的概念的。很多從 Eclipse 轉(zhuǎn)過來的人總是下意識地要再同一個窗口管理 n 個項目,這在 IntelliJ IDEA 是無法得到。IntelliJ IDEA 提供的體驗是:一個 Project 打開一個 Window 窗口。
對于 Project,IntelliJ IDEA 是這樣解釋的:
Whatever you do in IntelliJ IDEA, you do that in the context of a project. A project is an organizational unit that represents a complete software solution. It serves as a basis for coding assistance, bulk refactoring, coding style consistency, etc. Your finished product may be decomposed into a series of discrete, isolated modules, but it's a project definition that brings them together and ties them into a greater whole. Projects don't themselves contain development artifacts such as source code, build scripts, or documentation. They are the highest level of organization in the IDE, and they define project-wide settings as well as collections of what IntelliJ IDEA refers to as modules and libraries. 20170630 更新新地址:https://www.jetbrains.com/help/idea/about-projects.html
對于 Module,IntelliJ IDEA 是這樣解釋的:
A module is a discrete unit of functionality which you can compile, run, test and debug independently. Modules contain everything that is required for their specific tasks: source code, build scripts, unit tests, deployment descriptors, and documentation. However, modules exist and are functional only in the context of a project. Configuration information for a module is stored in a .iml module file. By default, such a file is located in the module's content root folder.Development teams, normally, share the .iml module files through version control. 20170630 更新新地址:https://www.jetbrains.com/help/idea/about-modules.html?search=About
通過上面的介紹我們知道,在 IntelliJ IDEA 中 ?Project
?是最頂級的級別,次級別是 ?Module
?。一個 ?Project
?可以有多個 ?Module
?。目前主流的大型項目結(jié)構(gòu)都是類似這種多 ?Module
?結(jié)構(gòu),這類項目一般是這樣劃分的,比如:?core Module
?、?web Module
?、?plugin Module
?、?solr Module
?
等等,模塊之間彼此可以相互依賴。通過這些 ?Module
? 的命名也可以看出,他們之間應(yīng)該都是處于同一個項目業(yè)務(wù)情況下的模塊,彼此之間是有不可分割的業(yè)務(wù)關(guān)系的。
所以我們現(xiàn)在總結(jié):一個 ?Project
? 是由一個或多個 ?Module
? 組成,模塊之間盡量是處在同一個項目業(yè)務(wù)的的情況下,彼此之間互相依賴關(guān)聯(lián)。這里用的是 盡量,因為 IntelliJ IDEA 的 ?Project
?是一個沒有具備任何編碼設(shè)置、構(gòu)建等開發(fā)功能的,主要起到一個項目定義、范圍約束、規(guī)范等類型的效果,也許我們可以簡單地理解為就是一個單純的目錄,只是這個目錄命名上必須有其代表性的意義。
下面我們以著名的 ?spring-framework
? 項目為例介紹多 ?Module
?的結(jié)構(gòu)的:
- 項目主頁:https://github.com/spring-projects/spring-framework
- 該項目的 ?
Project
?命名是:spring-?framework
?。該目錄主要作用為各個 ?Module
? 的頂層目錄進行約束,告訴協(xié)同者,這個目錄下都是 ?spring-framework
? 相關(guān)的,我絕不會放 Android 相關(guān)源碼、文檔、文件在上面的。該目錄并不是以一個實際性的目錄來體現(xiàn)的,所以你訪問主頁是看不到的,但是當(dāng)你 ?checkout
? 的時候,你必須為這個項目命名,至于命名默認就是 ?spring-framework
?。- 該 ?
Project
? 下有二十來個 ?Module
?,各個 ?Module
?的命名也是有含義的,比如:?spring-core
?、?spring-jdbc
?、?spring-jms
?、?spring-orm
?、?spring-web
?、?spring-webmvc
? 等等,我們通過這些命名也能清楚地知道他們要表達的含義,這些 ?Module
?下也都各自有 ?src
? 編碼目錄,可以自行編碼和構(gòu)建。
Project 和 Module 介紹
- 相比較于多 ?
Module
?項目,小項目就無需搞得這么復(fù)雜。只有一個 ?Module
?的結(jié)構(gòu) IntelliJ IDEA 也是支持的,并且 IntelliJ IDEA 創(chuàng)建項目的時候,默認就是單 ?Module
?的結(jié)構(gòu)的。- 如上圖 Gif 圖演示,在輸入 ?
Project name
?的時候,?Module name
? 和 ?Module file Location
?自動進行改變,同時 ?Project location
? 和 ?Module file Location
? 完全一樣,這也就表示,?Project
?目錄和 ?Module
? 目錄是同一個,所以此時 ?Project
?目錄下就會有 ?src
? 目錄,但是我們應(yīng)該明白其本質(zhì)還是 ?Module
?的目錄。
關(guān)于 IntelliJ IDEA 的 ?Project
?和 ?Module
? 終于解釋清楚了,但是由于 IntelliJ IDEA 官網(wǎng)上又有一段話對此解釋得不夠好,特別是對 Eclipse 用戶來講:https://www.jetbrains.com/idea/help/eclipse-faq.html,其中有這樣兩句話:
- An Eclipse workspace is similar to a project in IntelliJ IDEA
- An Eclipse project maps to a module in IntelliJ IDEA
你可以把 IntelliJ IDEA 的 ?Project
?當(dāng)做 ?workspace
?使用,IntelliJ IDEA 也是支持的,但是就像我們前面解釋的那么那么多,這樣是非常不符合其初衷的,所以請別把這段話當(dāng)做教義去學(xué)習(xí)。對此 zeroturnaround 的大牛也有針對此進行了說明:https://www.jrebel.com/blog/intellij-idea-tutorial
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: