配置Tomcat时为啥要配置Artifacts

配置Tomcat时为啥要配置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交互

当你点击"运行"时:

  1. IDEA将Artifact复制到Tomcat的 webapps 目录
  2. Tomcat加载该Artifact
  3. 启动应用
  4. 你可以通过 http://localhost:8080/ 访问

如果不配置Artifact会怎样?

  • Tomcat找不到可运行的应用
  • 你的代码无法被访问
  • 出现 "404 - 资源未找到" 错误
  • 无法进行调试和测试

总结:Artifacts的核心作用

作用 说明
打包编译结果 .java 编译成 .class
收集依赖 将所有需要的JAR包放在一起
组织资源 结构化存放HTML、CSS、JS等
标准化输出 生成Tomcat能识别的标准格式
方便部署 一键部署到服务器

简单说:Artifact就是你的"可运行软件包",没有它,Tomcat就无应用可运行!

相关推荐
后端AI实验室9 小时前
用AI写代码,我差点把漏洞发上线:血泪总结的10个教训
java·ai
程序员清风11 小时前
小红书二面:Spring Boot的单例模式是如何实现的?
java·后端·面试
belhomme11 小时前
(面试题)Redis实现 IP 维度滑动窗口限流实践
java·面试
Be_Better12 小时前
学会与虚拟机对话---ASM
java
开源之眼14 小时前
《github star 加星 Taimili.com 艾米莉 》为什么Java里面,Service 层不直接返回 Result 对象?
java·后端·github
Maori31615 小时前
放弃 SDKMAN!在 Garuda Linux + Fish 环境下的优雅 Java 管理指南
java
用户9083246027315 小时前
Spring AI 1.1.2 + Neo4j:用知识图谱增强 RAG 检索(上篇:图谱构建)
java·spring boot
小王和八蛋15 小时前
DecimalFormat 与 BigDecimal
java·后端
beata15 小时前
Java基础-16:Java内置锁的四种状态及其转换机制详解-从无锁到重量级锁的进化与优化指南
java·后端
IT探险家16 小时前
你的第一个 Java 程序就翻车?HelloWorld 的 8 个隐藏陷阱
java