配置Tomcat时为啥要配置Artifacts
-
- [Artifacts 到底是什么?](#Artifacts 到底是什么?)
- [Artifact 的具体形式](#Artifact 的具体形式)
-
- [1. 打包类型](#1. 打包类型)
- [2. 为什么需要两种?](#2. 为什么需要两种?)
- [Artifact 包含什么?](#Artifact 包含什么?)
- 为什么必须配置Artifacts?
-
- [1. 部署到服务器的需要](#1. 部署到服务器的需要)
- [2. 依赖管理](#2. 依赖管理)
- [3. 资源组织](#3. 资源组织)
- IDEA中Artifacts配置的直观展示
- 实际工作流程
- 具体例子说明
- Tomcat如何与Artifact交互
- 如果不配置Artifact会怎样?
- 总结:Artifacts的核心作用
我们在配置Tomcat的时候会提示No artifacts configured,那么这里的artifacts到底有什么作用,为啥一定要配置

Artifacts 到底是什么?
Artifacts(构件/制品) 是你的项目编译打包后的最终可交付成果 。在Web开发中,它通常指的是 WAR包 或 展开的Web目录。
形象比喻:
- 你的源代码 = 菜谱和食材
- Artifact = 做好的菜(可以直接上桌)
- Tomcat = 餐桌和食客
没有Artifact,Tomcat就不知道要"上什么菜"!
Artifact 的具体形式
1. 打包类型
myproject.war # 压缩包形式
myproject-exploded/ # 展开的目录形式
2. 为什么需要两种?
- WAR包:用于生产环境部署
- Exploded(展开式):用于开发调试(热部署,修改后立即生效)
Artifact 包含什么?
一个典型的Web Artifact包含:
📁 artifact-output/
├── 📁 WEB-INF/
│ ├── 📁 classes/ # 编译后的Java类
│ ├── 📁 lib/ # 依赖的JAR包
│ └── web.xml # 配置文件
├── 📁 css/ # 样式文件
├── 📁 js/ # JavaScript文件
├── 📁 images/ # 图片
└── index.jsp # JSP页面
为什么必须配置Artifacts?
1. 部署到服务器的需要
Tomcat只能运行已编译打包的应用,不能直接运行源代码。
没有Artifact时:
源代码 → ❌ Tomcat(无法识别)
有Artifact时:
源代码 → 编译打包 → Artifact → ✅ Tomcat(可以运行)
2. 依赖管理
Artifact会收集所有依赖的JAR包到 WEB-INF/lib 目录。
3. 资源组织
将分散的代码、资源、配置文件组织成标准结构。
IDEA中Artifacts配置的直观展示
在 Project Structure → Artifacts 中,你会看到类似这样的结构:
📦 YourProject:war exploded
├── 📁 Root
│ ├── 📁 WEB-INF
│ │ ├── 📁 classes ← 你的Java类
│ │ ├── 📁 lib ← 依赖库
│ │ └── web.xml
│ └── index.jsp
└── 📁 Available Elements
├── Module Output ← 编译输出
├── Module Dependencies ← 模块依赖
└── Web Resources ← Web资源
实际工作流程
源代码
编译
创建Artifact
选择部署方式
WAR包
展开目录
部署到Tomcat
浏览器访问
具体例子说明
假设你有一个简单的Servlet项目:
源代码结构:
src/
├── main/
│ ├── java/
│ │ └── com/example/HelloServlet.java
│ └── webapp/
│ ├── WEB-INF/
│ │ └── web.xml
│ └── index.html
配置Artifact后生成的输出:
out/
├── artifacts/
│ └── demo_war_exploded/ ← 这就是Artifact!
│ ├── WEB-INF/
│ │ ├── classes/
│ │ │ └── com/example/HelloServlet.class
│ │ ├── lib/
│ │ │ ├── servlet-api.jar
│ │ │ └── 其他依赖.jar
│ │ └── web.xml
│ └── index.html
Tomcat如何与Artifact交互
当你点击"运行"时:
- IDEA将Artifact复制到Tomcat的
webapps目录 - Tomcat加载该Artifact
- 启动应用
- 你可以通过
http://localhost:8080/访问
如果不配置Artifact会怎样?
- Tomcat找不到可运行的应用
- 你的代码无法被访问
- 出现 "404 - 资源未找到" 错误
- 无法进行调试和测试
总结:Artifacts的核心作用
| 作用 | 说明 |
|---|---|
| 打包编译结果 | 将 .java 编译成 .class |
| 收集依赖 | 将所有需要的JAR包放在一起 |
| 组织资源 | 结构化存放HTML、CSS、JS等 |
| 标准化输出 | 生成Tomcat能识别的标准格式 |
| 方便部署 | 一键部署到服务器 |
简单说:Artifact就是你的"可运行软件包",没有它,Tomcat就无应用可运行!