什麼是 .idea 目錄?
1. 概述
JetBrains IntelliJ IDEA 是 Java 開發人員中的熱門選擇,在使用它時,我們會在專案結構中遇到.idea
資料夾。
在本文中,我們將探討目錄的用途以及如何在現實專案中有效管理它。
2.IntelliJ IDEA配置方法
IntelliJ IDEA 提供多個設定選項來自訂專案設定。我們可以定義全域、專案級和模組級設定。
在探索專案結構時,除了提到的.idea
目錄之外,我們還會注意到.iml
檔案。 .idea
目錄和.iml
檔案都用於配置,並且在我們啟動新專案或開啟現有專案時自動產生。我們可以在專案的根目錄中找到它們,旁邊還有我們的pom.xml
(或其他建置檔)。
在某些情況下,單一項目可以結合多種技術並跨模組分佈邏輯組件。因此,一個專案可以由多個模組組成,每個模組可能需要不同的配置。
例如,與專案級配置相比,模組可能需要不同的 Java 版本和語言等級。 IntelliJ IDEA 使用.idea
目錄進行專案級設置,使用.iml
檔案進行模組層級設置,以方便所需的粒度配置。
.idea
目錄的內容
在.idea
目錄中,我們將找到各種文件和目錄。 JetBrains 的開發人員嘗試在不同的檔案之間指派配置,以防止版本控制系統索引此目錄時潛在的合併衝突。隨著 IDE 的發展和開發人員引入新功能,這可能會導致這些文件的內容發生變化以及新文件的新增。
3.1.文件和目錄概述
讓我們回顧一下通常可以在.idea
中找到的文件和目錄:
-
workspace.xml –
此檔案用作使用者特定的專案級配置的中央儲存庫,例如更改清單資訊、運行配置、更新的運行配置範本、一些 Maven 設定、斷點等 -
modules.xml –
在此檔案中,IntelliJ IDEA 儲存每個模組的 .iml 檔案的位置 -
vcs.xml –
此檔案儲存版本控制系統 (VCS) 設定和配置,在將我們的專案與 Git、SVN 等原始程式碼控制工具整合方面發揮關鍵作用 -
codeStyles –
儲存針對專案定制的程式碼樣式設置,包括有關目前使用的格式化程式和其他配置屬性的信息 -
dataSources –
當專案配置了資料來源時,它們的設定在這裡 -
shelf –
在 IntelliJ IDEA 中使用Shelf
功能進行版本控制時,此目錄暫存程式碼變更
.idea
資料夾的內容可能因項目而異。 IDE 可能會根據我們專案的配置和使用的工具新增其他目錄或檔案。
3.2. .idea
目錄總是存在嗎?
IntelliJ IDEA 會自動在所有專案中產生.idea
資料夾和.iml
檔案。該資料夾通常在 Windows 系統上可見。
然而,它通常隱藏在 macOS 和 Linux 系統上。這可能會導致混亂,但我們可以使用ls -a
看到它們。
4. 使用.idea
目錄
正如我們之前所看到的, .idea
資料夾是由 IDE 建立和管理的。
有些團隊喜歡提交這些文件,而有些團隊則不喜歡。讓我們回顧一下這兩種方法。
4.1.當我們提交.idea
目錄時
IntelliJ IDEA 可以輕鬆地重新生成.idea
資料夾內的某些文件,但某些文件需要額外的手動配置。
當專案設定很複雜時,我們可能希望與團隊成員共用本地配置以使引導更加順利。實現此目的的最簡單方法是提交.idea
目錄以及所有模組中的.iml
檔案。我們應該小心,避免分享特定於使用者的設置,例如workspace.xml
、 usage.statistics.xml
和shelf
目錄。
我們可以透過在.gitignore
檔案中加入一些排除項來解決此問題:
### IntelliJ IDEA User-specific stuff ###
.idea/**/workspace.xml
.idea/**/tasks.xml
.idea/**/usage.statistics.xml
.idea/**/dictionaries
.idea/**/shelf
JetBrains 建議提交.idea
資料夾並提供自己的gitignore
範例。然而,採用這種方法將我們的專案與特定的 IDE 連結起來,在具有多個開發人員的分散式團隊中通常不鼓勵這種方法,原因如下:
- 其他團隊成員可能使用不同的 IDE 或配置。
- 特定於 IDE 的配置將使儲存庫充滿與專案原始程式碼和運行配置無關的檔案。
- 隊友可以使用不同的 IDE 版本,這可能會導致合併衝突或不相容的配置。
4.2.當我們不提交.idea
目錄時
為了跨多個團隊進行無縫協作,特別是當成員使用不同的 IDE 時,建議gitignore
特定於 IDE 的檔案並避免將它們提交到共用儲存庫。讓我們來看看.gitignore
檔案應包含哪些內容:
### IntelliJ IDEA ###
.idea
*.iws
*.iml
*.ipr
/out/
.DS_Store
src/.DS_Store
透過這種方法,我們可以保持原始碼乾淨且專案獨立。這裡的主要缺點是必須為每個新團隊成員執行專案設定。
此問題通常可以透過包含所需 IDE 專案配置資訊的入門文件來解決。
4.3.我們什麼時候應該直接訪問.idea
目錄?
當專案意外停止工作時,我們可能需要與.idea
目錄進行互動。在這種情況下,開發人員通常會使用「無效快取/重新啟動」IntelliJ 選項。如果這沒有幫助,我們可以完全刪除.idea
目錄和所有.iml
文件,從而完全重新啟動我們的專案。
我們應該注意,如果刪除 IntelliJ IDEA 文件,我們將丟失所有擱置的更改,並且需要再次設定項目首選項。
5. 結論
在本文中,我們探索了 IntelliJ IDEA 的配置,深入研究了.idea
資料夾的本質,並研究了.iml
檔案的作用。
我們討論了.idea
資料夾中的內容以及我們的原始碼管理如何處理該目錄,並且研究了跨開發人員工作站共享其內容的優缺點。