恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
IDEA工程结构解析:项目、模块、库、Facet、Artifact (工件) 概念说明
首页
资讯中心
/
IDEA工程结构解析:项目、模块、库、Facet、Artifact (工件) 概念说明
IDEA工程结构解析:项目、模块、库、Facet、Artifact (工件) 概念说明
发布时间:2026/10/11 1:51:47
对于有Java编码经验刚刚使用IDEA的小伙伴们来说我们必须了解项目、模块、库、Facet、Artifact (工件) 这几个概念我们可以在项目结构中看见关于他们的设置情况如下图进入文件项目结构1 Project项目Project 是 IDEA 的最高层级工作容器。一个 Project 内部可以包含一个或多个 Module模块。存储全局配置JDK、全局依赖库、文件编码、文件模板、编译排除规则。磁盘对应一个文件夹内部隐藏目录.idea保存全部项目级 IDE 配置。约束IDEA 同一窗口仅可打开一个 Project如需处理多套独立代码需在新窗口打开不同 Project。业务示例Burp 插件开发场景下整个工作目录即为一个 Project可仅维护单个业务模块。2 Module模块Module 是实际承载代码的执行单元隶属于 Project。每个模块具备独立的源码目录、测试源码目录、编译输出目录out模块配置保存在*.iml文件。单个 Project 可容纳多个模块模块可以存放在项目子目录或磁盘其他路径。*.iml模块专属配置文件记录源码根路径、测试目录、依赖库列表、编译输出路径。业务示例将burpsuite_pro.jar设置为模块依赖该配置写入模块 iml仅对当前模块生效。Project 与 Module 关系类比Project外层容器仓库Module容器内独立代码单元仓库内存储箱绝大多数小型工程Burp 插件采用1 个 Project1 个 Module 的结构。3 Libraries库 / 依赖库由若干 jar 资源构成提供外部已实现的类供业务代码调用。分为三级作用域Global Libraries 全局库Project 全局可用多个项目可复用。Project Libraries 项目库仅当前 Project 下全部模块可用。Module Libraries 模块库仅当前模块可见。重要特性库仅用于编译期引用Artifact 打包默认不会将依赖库打入输出产物。 业务示例Burp 插件开发burpsuite_pro.jar设置为模块库解决接口类找不到编译报错最终插件 jar 不需要打包该依赖Burp 运行环境已内置对应 API。4 Facet面Facet 是附加在 Module 上的技术标记用于告知 IDEA 当前模块使用的技术栈开启对应 IDE 辅助能力。Facet 依附于模块单个模块可配置多个 Facet。常见 FacetJava普通 Java 模块启用 Java 编译能力。WebWeb 工程识别 web.xml支持容器部署配置。Spring / Hibernate框架专属识别、配置文件提示。业务示例普通 Burp 插件模块自动配置 Java Facet无需手动修改。概念总结Facet 是模块的功能开关控制 IDEA 启用对应技术栈的解析与提示。5 Artifact工件Artifact 属于项目级配置定义产物打包组装规则存储路径.idea/artifacts。输入来源已经编译完成的 class 字节码、静态资源文件Artifact 本身不执行 Java 源码编译。可自定义打包内容选择包含 / 排除指定 class、配置 MANIFEST.MF 清单文件。输出产物支持jar、war、解压目录。业务示例Burp 插件 Artifact 配置仅选取业务 class排除无关类输出 jar 包供 Burp Extender 加载。关键约束源码修改后必须先编译生成新的 class 文件再执行构建工件否则打包产物为旧字节码。在IDEA中可以像下图一样构建工件这里需要注意一下Build Project构建项目编译整个 Java 源码生成.class字节码文件Build Artifacts构建工件把编译好的 class、资源打包成最终产物jar/war/zip层级结构总览Project(项目.idea文件夹) ├─ JDK、全局库、全局工程设置 └─ Module(模块*.iml) ├─ Facet标记模块技术栈类型 ├─ Module Libraries模块私有依赖库 └─ src源码目录 → 编译输出 out/production/模块名/*.class Project独立配置Artifact工件 └─ 读取out目录已编译字节码组装输出jar/war最终产物通俗类比Project 项目整套房屋Module 模块房屋内独立房间存放业务代码iml 为房间配置说明Library 库房间内外部工具包编译可以引用默认不跟随打包输出Facet房间用途标签告诉 IDE 使用何种编译器、解析规则Artifact 工件打包方案定义选取哪些物品组装成最终行李箱jar 包实操流程创建 Project内部创建单个 Module 模块。Module 自动附加 Java Facet。将burpsuite_pro.jar添加为模块库消除接口类编译报错。在 src 目录编写业务 Java 源码。执行 Build ProjectCtrlF9源码编译为 class 输出到 out 目录。配置 Artifact 工件仅选择业务 class 作为打包输入。Build Artifacts生成 jar。常见踩点清单修改源码后直接构建工件不会自动编译源码产物使用旧字节码功能无更新。需要优先执行 Build Project。依赖库添加到 Project 级别但模块未引用模块内代码依旧报类找不到。Artifact 为项目级配置删除模块不会自动清理 Artifact需要手动删除无效配置。*.iml属于 IDE 本地配置版本管理一般加入.gitignore不提交至仓库。