IDEA | Idea项目目录结构设定分析
author: Nathan_alzy
date: 2021-11-06-17:45
tags: #IDEA
Distribution: Local / cnblog
1、理解Idea目录设定需要掌握的概念
- Module
- Project
- Content root
2、不同结构视图
- 文件系统中项目视图
- Idea中项目视图
案例1: 默认创建一个项目Project
S1: 退出当前项目,从Idea欢迎界面创建一个新的项目
S2: 点击【Projects】➞ 【New Project】
S3: 设置项目名和路径
Project name = Project_demo
Project location = D:ProjectsProject_demo
---
Module name = Project_demo
Content root = D:ProjectsProject_demo
Module file location = D:ProjectsProject_demo
Project format = .idea(directory based)
分析: 默认Project location
是“某个磁盘位置+当前项目名(Project name)”,同时注意到下方的【More Settings】选项,模块名(Module name)也是当前项目名,内容根目录也是Project location
,模块文件位置也是Project location
。
猜想: 创建一个项目(Project)”Project_demo”会同时创建一个默认的模块(Module),且这个模块名和项目名一致。储存位置也和项目名一致。
最后的结构是:
Project_demo
│
├───.idea
│
│
├───src
│
│
└───Project_demo.iml
在文件系统中的内容结构:
Idea中项目内容:
⚠️ 这里的「Project_demo」指示的不是项目名的「Project_demo」而是模块名的「Project_demo」,因为这里采用默认,则模块名和项目名相同。
S4: 查看项目设置(Project Setttings),【File】➞ 【Project structure】
可以看到确是存在名为“Project_demo”的模块,即证明了在创建一个项目时同时创建了一个同名的模块。
案例2: 创建一个项目同时指定多个模块
为了更直观的认识「Project」和「Module」,这次创建项目同时指定Module名和储存路径,而不采用默认项目名和项目储存路径。
猜想: 这样设置后,会在Proct_demo2
下创建一个模块名为Module_demo
,并且储存在D:ProjectsProject_demo2Module_demo
下。
创建的项目目录结构:
Project_demo2
│
│
├───.idea
│
│
└─┬─Module_demo
│
├─── src
│
└────Module>demo.imi
文件系统中内容结构:
在Idea中显示的结构:
此时,指定Module储存位置和Project储存位置区分后,只显示模块名「Module_demo」
分析: 通过案例1和案例2可以区分「Project」和「Module」。
从生成内容上区分:
- Project: 仅仅生成
.idea
文件 - Module: 生成
src
和xxx.imi
文件
情况1: 如果设置Project储存路径和Module路径一样,则.idea
,src
,xxx.imi
会在同目录下。
情况2: 如果单独指定Module名,指定Module储存路径,则模块内容在单独目录下。
这也是为什么案例1中模块文件和项目文件混合起来
案例3:创建项目指定module location
文件树结构:
D:.
├─.idea
│ └─codeStyles
│
├─ModuleName_demo3
└─Module_demo3
└─src
分析: 说明content root
和module
并不是同一个概念。
Content root和Module file辨析
- Content root: 表示储存模块的内容根目录,内容有
src
。 - Module file location: 模块的储存位置,内容有
xxx.imi
总结:
Project只是一个范围的限制,用于限定若干模块,可以理解为一个文件夹,没有实质功能,真正的代码是编写在模块中,创建项目真正是创建模块。
默认创建项目(不指定模块名,和储存位置),虽然在文件系统中是一个结构,以项目名为名的目录下有若干内容,但是在idea中查看结构,有明显的「project」和「Module」的配置之分。所以为了搞清楚当前项目结构以Idea界面中的配置为准。
1、对于不同概念(目录)产生的内容
- Project: 生成
.idea
- Module: 生成
xxx.imi
- Content root: 生成
src
2、对于模块名称和模块储存位置
- 如果创建项目不显式指定模块名,则模块名和项目名相同
- 如果不指定模块储存位置,则模块储存在项目根目录下,此时项目文件和模块文件混杂