Maven Archetype 项目模板

在学习 Maven 或创建 Java 项目时,你可能见过这样一个依赖:

text 复制代码
org.apache.maven.archetypes:maven-archetype-quickstart

很多初学者第一次看到时都会疑惑:

这到底是什么?是依赖包吗?还是插件?为什么创建项目时会出现它?

本文将带你彻底理解 Maven Archetype 的作用,以及 maven-archetype-quickstart 在 Java 开发中的定位。


一、什么是 Maven Archetype?

在 Maven 中,Archetype(原型) 可以理解为:

项目模板(Project Template)或项目脚手架(Scaffold)。

它的主要作用是帮助开发者快速生成一个标准化的项目结构。

例如,当你准备创建一个新的 Java 项目时,不需要手动创建:

text 复制代码
src/main/java
src/test/java
pom.xml

这些目录和文件。

Maven 可以根据 Archetype 模板自动帮你生成。

简单来说:

text 复制代码
Archetype = 项目模板

就像:

text 复制代码
Word 有简历模板
PPT 有演示模板

Maven 也有项目模板

二、什么是 maven-archetype-quickstart?

maven-archetype-quickstart 是 Maven 官方提供的一个最基础的 Java 项目模板。

它的目标非常简单:

快速创建一个可运行的 Java Maven 项目。

官方坐标如下:

xml 复制代码
org.apache.maven.archetypes:maven-archetype-quickstart

当我们执行:

bash 复制代码
mvn archetype:generate

并选择:

text 复制代码
maven-archetype-quickstart

时,Maven 会自动帮我们生成一个标准的 Java 项目骨架。


三、如何使用 QuickStart 创建项目?

执行以下命令:

bash 复制代码
mvn archetype:generate \
-DgroupId=com.demo \
-DartifactId=test-project \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false

参数说明:

参数 作用
groupId 包名组织标识
artifactId 项目名称
archetypeArtifactId 使用的项目模板
interactiveMode 是否交互输入

执行完成后会生成一个项目:

text 复制代码
test-project
│
├── pom.xml
│
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── demo
    │               └── App.java
    │
    └── test
        └── java
            └── com
                └── demo
                    └── AppTest.java

这就是一个标准的 Maven Java 项目结构。


四、生成的项目结构详解

1. src/main/java

存放业务代码。

text 复制代码
src/main/java

这里面的代码最终会被编译打包到 Jar 包中。

例如:

java 复制代码
package com.demo;

public class App {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

2. src/test/java

存放测试代码。

text 复制代码
src/test/java

例如:

java 复制代码
class AppTest {

    @Test
    void test() {

    }

}

用于编写 JUnit 测试用例。


3. pom.xml

Maven 项目的核心配置文件。

例如:

xml 复制代码
<project>

    <groupId>com.demo</groupId>
    <artifactId>test-project</artifactId>
    <version>1.0-SNAPSHOT</version>

</project>

后续所有依赖管理、插件配置、打包方式等都在这里完成。


五、QuickStart 帮我们解决了什么问题?

如果没有 Archetype,我们创建项目需要:

text 复制代码
手动创建目录

手动创建 pom.xml

手动创建测试目录

手动创建 Main 类

而使用 Archetype:

text 复制代码
一条命令即可完成

效果相当于:

text 复制代码
手工搭积木
↓

使用项目模板

开发效率会高很多。


六、为什么现在很少有人使用它?

在 Maven 早期时代:

text 复制代码
Java Web
Servlet
JSP

比较流行。

因此:

text 复制代码
maven-archetype-quickstart

非常常见。


但随着 Spring Boot 的普及,项目创建方式发生了变化。

现在企业开发通常直接使用:

text 复制代码
Spring Initializr

也就是:

text 复制代码
https://start.spring.io

生成项目。

例如选择:

text 复制代码
Spring Web
MySQL
MyBatis
Redis

然后直接下载。

生成的项目已经具备:

text 复制代码
Spring Boot
自动配置
依赖管理
启动类
配置文件

无需再从 QuickStart 开始搭建。


七、企业项目通常怎么创建?

现在主流方式主要有三种。

方式一:Spring Initializr

最常见。

text 复制代码
Spring Boot 官方脚手架

生成:

text 复制代码
Spring Boot 项目

方式二:IDEA 创建

IntelliJ IDEA:

text 复制代码
New Project
    ↓
Spring Initializr

即可完成项目创建。


方式三:公司内部脚手架

很多公司会维护自己的项目模板。

例如:

text 复制代码
统一日志

统一异常

统一认证

统一监控

统一代码规范

新人创建项目时直接基于公司脚手架生成。


八、面试中需要掌握到什么程度?

对于 Java 后端开发来说:

了解即可

  • 什么是 Archetype

  • 什么是 QuickStart

  • 如何创建 Maven 项目


必须掌握

真正高频面试点其实是:

Maven 生命周期

text 复制代码
clean
validate
compile
test
package
verify
install
deploy

Maven 依赖管理

xml 复制代码
<dependency>

依赖传递

依赖冲突

依赖排除

版本管理


Maven 聚合与继承

xml 复制代码
<modules>
xml 复制代码
<parent>

多模块项目是企业开发的标配。


Maven 插件机制

例如:

xml 复制代码
maven-compiler-plugin

spring-boot-maven-plugin

这些比 Archetype 重要得多。


九、总结

一句话概括:

maven-archetype-quickstart 是 Maven 官方提供的一个基础 Java 项目模板,用于快速生成标准的 Maven 项目结构。

它能够自动创建:

text 复制代码
pom.xml

src/main/java

src/test/java

示例代码

帮助开发者快速开始一个 Java 项目。

不过在现代 Java 企业开发中,Spring Boot 已成为主流,因此 QuickStart 更多用于学习 Maven 或编写简单 Demo。

相关推荐
CoderYanger4 小时前
Java EE 进阶:8.MyBatis 操作数据库(入门)(第二弹)
java·数据库·spring boot·spring·面试·java-ee·mybatis
CQU_JIAKE6 小时前
11.7[高体】
java·后端·spring
apcipot_rain7 小时前
C++转Java日记(04)
java·开发语言·c++
特立独行的猫A8 小时前
我给女儿写了个打字练习:一边敲键盘,一边把小学英语单词记牢
java·后端·python
憧憬成为java架构高手的小白9 小时前
LangGraph4j 实战(下)
java
天诰10 小时前
SA-K-11 检索会消失吗与四个未解问题
java·服务器·人工智能·python·机器学习·ai编程
这个昵称不容易13 小时前
SpringBoot「衣依」服装销售平台:144个Java文件180个接口,从挑衣服到收货评价整条链路都在
java·springboot·毕设
计算机毕设定制辅导-无忧学长14 小时前
《基于微信小程序的居家医疗陪护预约系统设计与实现》
java·spring boot·微信小程序·uniapp·居家医疗陪护预约系统
文丑颜不良啊15 小时前
LeetCode2221~2240题目解析
java·leetcode
秋饼15 小时前
Computer Use Agent Java 落地实战:感知-行动循环、执行器与安全围栏生产级实现
java·ai·技术分享·后端开发