程序员scholar 程序员scholar
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
首页
  • Java 基础

    • JavaSE
    • JavaIO
    • JavaAPI速查
  • Java 高级

    • JUC
    • JVM
    • Java新特性
    • 设计模式
  • Web 开发

    • Servlet
    • Java网络编程
  • Web 标准

    • HTML
    • CSS
    • JavaScript
  • 前端框架

    • Vue2
    • Vue3
    • Vue3 + TS
    • 微信小程序
    • uni-app
  • 工具与库

    • jQuery
    • Ajax
    • Axios
    • Webpack
    • Vuex
    • WebSocket
    • 第三方登录
  • 后端与语言扩展

    • ES6
    • Typescript
    • node.js
  • Element-UI
  • Apache ECharts
  • 数据结构
  • HTTP协议
  • HTTPS协议
  • 计算机网络
  • Linux常用命令
  • Windows常用命令
  • SQL数据库

    • MySQL
    • MySQL速查
  • NoSQL数据库

    • Redis
    • ElasticSearch
  • 数据库

    • MyBatis
    • MyBatis-Plus
  • 消息中间件

    • RabbitMQ
  • 服务器

    • Nginx
  • Spring框架

    • Spring6
    • SpringMVC
    • SpringBoot
    • SpringSecurity
  • SpringCould微服务

    • SpringCloud基础
    • 微服务之DDD架构思想
  • 日常必备

    • 开发常用工具包
    • Hutoll工具包
    • IDEA常用配置
    • 开发笔记
    • 日常记录
    • 项目部署
    • 网站导航
    • 产品学习
    • 英语学习
  • 代码管理

    • Maven
    • Git教程
    • Git小乌龟教程
  • 运维工具

    • Docker
    • Jenkins
    • Kubernetes
  • 算法笔记

    • 算法思想
    • 刷题笔记
  • 面试问题常见

    • 十大经典排序算法
    • 面试常见问题集锦
关于
GitHub (opens new window)
npm

(进入注册为作者充电)

  • 程序员日常

    • 基于jmeter完成压测
    • 在IDEA中配置Git的Push键
    • 添加 VSCode右键快捷菜单
    • Typora+PicGo搭建博客图床
    • 系统重装日记
    • MarkDown语法总览
    • Markdown技巧笔记
    • 解决Win11右键菜单问题
    • 理解Project和Module
      • 1. 前言
      • 2. Project 和 Module 概念
        • 2.1 什么是 Project
        • 2.2 什么是 Module
        • 2.3 错误使用方式
        • 2.4 正确使用方式
      • 3. 新建项目 Project
        • 3.1 创建新项目
        • 3.2 .idea 文件夹的作用
      • 4. 新建模块 Module
        • 4.1 创建新模块
        • 4.2 .iml 文件的作用
      • 5. 总结
    • IntelliJ IDEA 项目结构
    • 前端免费接口
  • 开发工具
  • 程序员日常
scholar
2024-02-03
目录

理解Project和Module

# 1. 前言

IntelliJ IDEA 是一款现代化的开发工具,相较于 Eclipse,IntelliJ IDEA 逐渐成为了 JVM 平台上的主流 IDE。由于历史原因,许多“老”程序员是从 Eclipse 迁移到 IDEA 的,这也催生了一些用于对比和帮助迁移的概念表格。然而,这些表格有时可能会带来误导,尤其是将 IDEA 的 Project 比作 Eclipse 的 Workspace 这一常见错误理解。

本文将详细介绍 IntelliJ IDEA 中的 Project 和 Module 概念,并且纠正一些常见的误解,帮助你更好地理解并使用 IntelliJ IDEA。


# 2. Project 和 Module 概念

# 2.1 什么是 Project

在 Eclipse 中,一个 Workspace 可以包含多个 Project,而在 IntelliJ IDEA 中,Project 是顶级概念,相当于一个完整的解决方案。

  • Project(项目):在 IntelliJ IDEA 中,Project 是一个逻辑上的集合,包含源代码、构建脚本、配置文件、文档、SDK、依赖库等资源。一个 Project 代表一个完整的解决方案,可以独立运行或部署。

    建议将 Project 翻译为“项目”而不是“工程”,因为在 IDEA 中,Module 也可以理解为工程,这样翻译更能避免混淆。

# 2.2 什么是 Module

Module 是 IntelliJ IDEA 中 Project 的组成部分,它必须隶属于某个 Project。

  • Module(模块):Module 是一个 Project 的部分,它可以独立编译、测试、运行甚至部署。模块是将大型项目分而治之的有效手段,可以被多个 Project 引用。

    总结:

    1. 在 IntelliJ IDEA 中,Project 是顶级组织单元,一个窗口只能代表一个 Project。

    2. 一个 Project 可以包含多个 Module,每个 Module 可以是一个独立的功能单元,如图所示:

      多模块项目结构

    3. Module 可以包含子模块,尽管可以无限延伸,但建议保持适当的层级深度以避免复杂性。

# 2.3 错误使用方式

许多从 Eclipse 迁移过来的开发者习惯将多个不相关的项目放在同一个 IntelliJ IDEA 窗口中,这是一种错误的做法。

  • 优点:可以在一个窗口中看到多个项目。

  • 弊端:

    1. 视窗功能混杂,不同项目的类容易混淆。
    2. 干扰性强,搜索和导航变得困难。
    3. 性能开销增加,加载不相关的模块会影响开发效率。
    4. 概念混乱,将不同项目放在同一个窗口会导致概念上的误解。

    错误使用方式

# 2.4 正确使用方式

在 IntelliJ IDEA 中,每个 Project 都应该独立管理,不相关的项目不应放在同一窗口中。这种做法使得界面清爽、运行流畅,并且解决了上面错误方式中的所有弊端。

正确使用方式


# 3. 新建项目 Project

要开始使用 IntelliJ IDEA,首先需要新建一个 Project。

# 3.1 创建新项目

  1. 打开 IDEA,选择“Create New Project”。

    新建项目

  2. 也可以在现有窗口中通过 File -> New -> Project 创建。

    项目创建选项

  3. 选择创建项目的方式,如 Java 项目:

    选择项目类型

  4. 输入项目名称、存储位置,并设置模块名和位置。

    项目设置

    • 项目存储位置:通常作为整个项目的根目录。
    • 内容根目录:存储项目的源代码和资源文件。
    • 模块文件存放目录:存储模块配置文件的位置。
  5. 完成设置后,点击 Finish,IDEA 会在新窗口中打开创建好的项目:

    新项目窗口

# 3.2 .idea 文件夹的作用

每个 Project 都对应一个 .idea 文件夹,存储项目的特定设置,如模块信息、依赖信息等。

  • misc.xml:描述项目的 SDK、语言等级等信息。
  • modules.xml:描述项目包含的模块信息。
  • workspace.xml:保存窗口布局、颜色、滚动条等个性化配置。
  • vcs.xml:存储版本控制工具(如 Git)的配置。

.idea 文件夹中的内容通常由 IDEA 自动管理,开发者不需要手动修改。


# 4. 新建模块 Module

创建一个 Project 后,默认会生成一个同名的 Module。如果项目复杂,通常需要进一步拆分为多个模块。

# 4.1 创建新模块

  1. 在顶部菜单栏选择 File -> New -> Module,或在 Project Structure 中创建。

    创建新模块

  2. 选择模块类型,如 Java、Maven 等。

    选择模块类型

  3. 设置模块名称和存储位置,模块路径默认放在项目目录的子目录下。

    设置模块路径

  4. 完成后,模块会显示在项目视图中。

    模块视图

  5. 项目与模块的层级结构如下图所示:

    项目模块结构

    如果要实现所有模块平级的结构,需要在新建模块时注意路径选择。

# 4.2 .iml 文件的作用

每个 Module 都对应一个 .iml 文件,描述模块的 SDK、依赖、源代码位置、输出路径等信息。


# 5. 总结

本文详细介绍了 IntelliJ IDEA 中的 Project 和 Module 概念,并通过具体示例展示了它们的正确使用方式。简单总结如下:

  • Project 是 IntelliJ IDEA 中的顶级概念,代表一个完整的解决方案,通常包含多个模块。
  • Module 是代码的实际存在形式,是 Project 的组成部分,支持独立编译和运行。
  • 在使用 IntelliJ IDEA 时,务必避免将不相关的项目放在同一窗口中,以免混淆和干扰。

通过正确理解和使用 IntelliJ IDEA 的 Project 和 Module,可以更好地组织和管理项目,提升开发效率。

编辑此页 (opens new window)
上次更新: 2024/12/28, 18:32:08
解决Win11右键菜单问题
IntelliJ IDEA 项目结构

← 解决Win11右键菜单问题 IntelliJ IDEA 项目结构→

Theme by Vdoing | Copyright © 2019-2025 程序员scholar
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式