Maven Archetype 该选哪个?一文读懂 IntelliJ IDEA 中的项目“模板”
文章目录

前言
对于许多刚接触 Java 和 Maven 的开发者来说,在 IntelliJ IDEA 中创建新项目时,面对 Maven Archetype 下拉框里那一长串眼花缭乱的选项,常常会感到困惑:“我到底该选哪一个?”
选择 maven-archetype-quickstart 和 maven-archetype-webapp 到底有什么区别?选错了会怎么样?
别担心,这篇文章将为你彻底厘清这些概念。读完后,你将能够根据自己的项目需求,自信地选择最合适的 Archetype,为你的项目开启一个完美的开端。
什么是 Maven Archetype?
首先,我们来搞清楚 Archetype(原型)到底是什么。
你可以把它简单地理解为 “项目的模板” 或 “项目骨架生成器”。
它的核心作用是,根据你选择的模板,快速生成一个预设好目录结构和基础配置的 Maven 项目。这极大地避免了我们每次都从零开始手动创建 src/main/java、src/test/java 等目录,以及编写基础的 pom.xml 文件。
不同的 Archetype 就像不同类型的“毛坯房”:
- 有的给你一个最简单的空架子,适合自由发挥。
- 有的给你一个已经建好 Web 结构(带
webapp目录)的架子,适合拎包入住搞 Web 开发。 - 有的甚至帮你把单元测试、项目文档站点等都规划好了。
选择正确的 Archetype,能让你的项目从一开始就拥有一个规范、清晰的结构。
几个核心 Archetype 的区别与选择指南
虽然列表里选项很多,但日常开发中我们 95% 的时间只会和其中两三个打交道。下面我们就来重点解析几个最常用的 Archetype。
1. maven-archetype-quickstart
这是最常用、最基础、最重要的一个 Archetype。如果你不确定该选哪个,选它通常不会错。
-
特点:
- 创建一个非常标准、通用的 Java 项目结构。
- 包含
src/main/java和src/test/java目录。 - 自动生成一个简单的
App.java(带main方法)和一个AppTest.java(JUnit 测试示例),方便你快速验证项目。 pom.xml中只包含了对 JUnit 的最基本依赖。
-
适用场景:
- ✅ 学习 Maven 或任何 Java 技术的入门项目(比如学习 MyBatis、Spring 核心等)。
- ✅ 开发命令行应用、工具库、后端服务模块等任何非 Web 的标准 Java 项目。
- ✅ 当你想要一个最干净的起点,然后自己来决定后续要添加哪些框架和依赖时。
一句话总结:万能起点,后端和库开发首选。
2. maven-archetype-webapp
这个 Archetype 的目标非常明确:创建传统的 Java Web 应用程序。
-
特点:
- 除了
src/main/java,它还会创建一个src/main/webapp目录,这是存放网页、JSP、CSS、JS 等静态资源的地方。 - 在
src/main/webapp下会自动生成一个WEB-INF目录和一个web.xml文件。web.xml是传统 Java Web 应用的“部署描述符”,用于配置 Servlet、Filter 等。 - 通常还会附带一个
index.jsp示例页面。
- 除了
-
适用场景:
- ✅ 开发需要部署到传统 Servlet 容器(如 Tomcat, Jetty)的 JSP/Servlet 项目。
- ✅ 学习和维护一些使用传统 Java Web 技术栈(非 Spring Boot)的老项目。
-
⚠️ 特别注意:
- 如果你打算使用 Spring Boot 来开发 Web 应用,请不要选择这个 Archetype。Spring Boot 采用内嵌式 Web 服务器(如内嵌 Tomcat),并且推崇“零配置”,它不使用
web.xml。你应该通过start.spring.io或 IDE 的 Spring Initializr 来创建 Spring Boot 项目。
- 如果你打算使用 Spring Boot 来开发 Web 应用,请不要选择这个 Archetype。Spring Boot 采用内嵌式 Web 服务器(如内嵌 Tomcat),并且推崇“零配置”,它不使用
一句话总结:传统 JSP/Servlet Web 项目专用。
3. maven-archetype-j2ee-simple
这是一个相对“古老”且重量级的原型,用于创建符合 Java EE (现在叫 Jakarta EE) 规范的企业级应用。
- 特点:
- 结构比
webapp更复杂、更庞大,可能会包含 EJB (Enterprise JavaBeans) 等企业级技术的目录结构和配置。
- 结构比
- 适用场景:
- ✅ 开发需要部署在完整 Java EE 应用服务器(如 WildFly, GlassFish, WebSphere)上的大型、分层的企业级应用。
- 对于绝大多数现代开发者和中小项目来说,这个原型过于复杂,极少会用到。
一句话总结:重量级企业应用(J2EE)专用,基本已成“古董”。
快速选择指南:一张表搞定
为了方便你快速决策,我把核心内容整理成了一张表格。
| Archetype 名称 | 核心用途 | 何时选择? |
|---|---|---|
maven-archetype-quickstart | 通用标准 Java 项目 | 绝大多数情况的首选! 无论是学习、开发后端服务、工具库,都从它开始。 |
maven-archetype-webapp | 传统 Java Web 项目 | 当你明确要开发一个基于 JSP/Servlet 并部署到外部 Tomcat 的项目时。 |
maven-archetype-j2ee-simple | 传统企业级 J2EE 项目 | 极少使用。适用于需要完整 J2EE 规范的重量级企业应用。 |
结论
现在,回到最初的问题,当你想要创建一个项目来学习 MyBatis 时,应该选择哪个?
答案是:maven-archetype-quickstart。
因为 MyBatis 是一个持久层框架,它本身不依赖任何 Web 环境。你需要的是一个最纯粹、最标准的 Java 项目环境来运行你的代码和测试,quickstart 恰好提供了这一切。
希望这篇文章能帮你扫清在创建 Maven 项目时的困惑。记住,选择正确的 Archetype 是项目规范化的第一步。Happy Coding!
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐



所有评论(0)