Maven Archetype 项目模板的实现

 更新时间:2026年06月23日 09:33:13   作者:南部余额  
Maven Archetype是项目模板工具,maven-archetype-quickstart是官方基础Java项目模板,可快速生成标准Maven项目结构,下面就来详细的介绍一下Maven Archetype模板的实现,感兴趣的可以了解一下

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

org.apache.maven.archetypes:maven-archetype-quickstart

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

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

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

一、什么是 Maven Archetype?

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

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

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

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

src/main/java
src/test/java
pom.xml

这些目录和文件。

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

简单来说:

Archetype = 项目模板

就像:

Word 有简历模板
PPT 有演示模板
Maven 也有项目模板

二、什么是 maven-archetype-quickstart?

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

它的目标非常简单:

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

官方坐标如下:

org.apache.maven.archetypes:maven-archetype-quickstart

当我们执行:

mvn archetype:generate

并选择:

maven-archetype-quickstart

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

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

执行以下命令:

mvn archetype:generate \
-DgroupId=com.demo \
-DartifactId=test-project \
-DarchetypeArtifactId=maven-archetype-quickstart \
-DinteractiveMode=false

参数说明:

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

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

test-project
│
├── pom.xml
│
└── src
    ├── main
    │   └── java
    │       └── com
    │           └── demo
    │               └── App.java
    │
    └── test
        └── java
            └── com
                └── demo
                    └── AppTest.java

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

四、生成的项目结构详解

1. src/main/java

存放业务代码。

src/main/java

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

例如:

package com.demo;

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

2. src/test/java

存放测试代码。

src/test/java

例如:

class AppTest {

    @Test
    void test() {

    }

}

用于编写 JUnit 测试用例。

3. pom.xml

Maven 项目的核心配置文件。

例如:

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

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

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

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

手动创建目录
手动创建 pom.xml
手动创建测试目录
手动创建 Main 类

而使用 Archetype:

一条命令即可完成

效果相当于:

手工搭积木

使用项目模板

开发效率会高很多。

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

在 Maven 早期时代:

Java Web
Servlet
JSP

比较流行。

因此:

maven-archetype-quickstart

非常常见。

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

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

Spring Initializr

也就是:

https://start.spring.io

生成项目。

例如选择:

Spring Web
MySQL
MyBatis
Redis

然后直接下载。

生成的项目已经具备:

Spring Boot
自动配置
依赖管理
启动类
配置文件

无需再从 QuickStart 开始搭建。

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

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

方式一:Spring Initializr

最常见。

Spring Boot 官方脚手架

生成:

Spring Boot 项目

方式二:IDEA 创建

IntelliJ IDEA:

New Project
    ↓
Spring Initializr

即可完成项目创建。

方式三:公司内部脚手架

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

例如:

统一日志
统一异常
统一认证
统一监控
统一代码规范

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

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

对于 Java 后端开发来说:

了解即可

  • 什么是 Archetype
  • 什么是 QuickStart
  • 如何创建 Maven 项目

必须掌握

真正高频面试点其实是:

Maven 生命周期

clean
validate
compile
test
package
verify
install
deploy

Maven 依赖管理

<dependency>

依赖传递

依赖冲突

依赖排除

版本管理

Maven 聚合与继承

<modules>
<parent>

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

Maven 插件机制

例如:

maven-compiler-plugin

spring-boot-maven-plugin

这些比 Archetype 重要得多。

九、总结

一句话概括:

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

它能够自动创建:

pom.xml
src/main/java
src/test/java
示例代码

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

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

到此这篇关于Maven Archetype 项目模板的实现的文章就介绍到这了,更多相关Maven Archetype模板内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Netty分布式从recycler对象回收站获取对象过程剖析

    Netty分布式从recycler对象回收站获取对象过程剖析

    这篇文章主要为大家介绍了Netty分布式从recycler获取对象的过程源码剖析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-03-03
  • 使用Java实现系统托盘功能的介绍(附源码以及截图)

    使用Java实现系统托盘功能的介绍(附源码以及截图)

    本篇文章介绍了,在Java中实现系统托盘功能的详解,文中附源码以及截图介绍。需要的朋友参考下
    2013-05-05
  • Java不指定长度的二维数组实例

    Java不指定长度的二维数组实例

    今天小编就为大家分享一篇Java不指定长度的二维数组实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • java实现简单石头剪刀布游戏

    java实现简单石头剪刀布游戏

    这篇文章主要介绍了java实现简单石头剪刀布游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-02-02
  • SpringCloud中的Feign详解

    SpringCloud中的Feign详解

    这篇文章主要介绍了SpringCloud中的Feign详解,Feign是一个声明式的Web Service客户端,以Java接口注解的方式调用Http请求,同时Feign整合了Ribbon和Hystrix,实现负载均衡与容断功能,需要的朋友可以参考下
    2023-09-09
  • Java实现系统限流的示例代码

    Java实现系统限流的示例代码

    限流是保障系统高可用的方式之一,也是大厂高频面试题,它在微服务系统中,缓存、限流、熔断是保证系统高可用的三板斧,所以本文我们就来聊聊如何实现系统限流吧
    2023-09-09
  • java利用多线程和Socket实现猜拳游戏

    java利用多线程和Socket实现猜拳游戏

    这篇文章主要为大家详细介绍了java利用多线程和Socket实现猜拳游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • CentOS安装solr 4.10.3详细教程

    CentOS安装solr 4.10.3详细教程

    这篇文章主要为大家详细介绍了CentOS安装solr 4.10.3的详细教程 ,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • MyBatis使用雪花ID的实现

    MyBatis使用雪花ID的实现

    本文主要介绍了MyBatis使用雪花ID的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-04-04
  • 关于eclipse中运行tomcat提示端口被占用的4种解决

    关于eclipse中运行tomcat提示端口被占用的4种解决

    这篇文章主要介绍了关于eclipse中运行tomcat提示端口被占用的4种解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-01-01

最新评论