IntelliJ IDEA 的 project 和 module 是啥关系?

使用基于IntelliJ的IDE,如phpstorm、android studio都会对 project 和 module 的关系比较糊涂,简单的概括如下:

IntelliJ系中的 Project  相当于Eclipse系中的  Workspace ;

IntelliJ系中的 Module  相当于Eclipse系中的  Project ;

IntelliJ中一个 Project  可以包括多个  Module ;

Eclipse中一个 Workspace  可以包括多个  Project

PhpStorm中似乎在弱化 Module 的存在,把 File 菜单下的 New Module  菜单项目直接删除了。

在Android studio中仍存在:

Android studio中,一个Project代表一个完整的APP,Module表示APP中的一些依赖库或独立开发的模块。比如可以新建一个library做为module,然后在主APP上点右键 open module setting的Dependencies中添加一个模块依赖。然后主APP中就可以使用module中的类了。


之前是用eclipse的.idea的文档是这样写到的:


IntelliJ idea下的项目结构_intellij idea



intelliJ idea创建分层的项目结构


本文使用intelliJidea 14


在idea中创建一个分层(视图层、业务逻辑层、数据访问层)的项目步骤如下:


1.      创建一个project,idea在创建project的时候会默认创建一个module,此时,给这个project和module命名(比如hello_client,表示这是项目的客户端也就是视图层),并且指定项目存放路径。


2.      新建一个module,新建的时候路径指定为和上面的hello_client同级。命名为hello_service,表明这是项目的业务逻辑层。


3.      新建一个module,命名为hello_dal,表示这是项目的数据访问层,同上,此module的目录指定为和hello_client、hello_service同级。


4.      此时在project窗口中会看到并列的三个module。开发的时候就可以在不同的层次上放置不同的代码。如下图:

IntelliJ idea下的项目结构_java web_02


图:三个同级的module代表项目中的三个不同层


5.      在项目中hello_client会引用hello_service的代码,而hello_service会引用hello_dal的代码。在idea中添加引用的方式为:


a)        选中任意一个module,按F4进入project structure;


b)        选择左侧的modules菜单;


c)        选择中间的hello_client,选中右侧的dependencies选项卡,点击右侧的绿色+按钮,选择modeule dependecy,在弹出的选择框中选择hello_service。


d)        这样就为hello_client添加了hello_service的引用。直接在hello_client中引用hello_service的代码即可。


e)        同理,添加hello_service对hello_dal的引用。

IntelliJ idea下的项目结构_java web_03


图:hello_client添加对hello_service的引用