IDEA快速上手Maven项目:模板选择 + 多模块拆分
文章目录
- 概要
- 一、什么是 Maven 项目
- 二、新建 Maven 项目
- 1、什么是 Catalog?
- 2、常见 Archetype 模板
- 三、 将 SpringBoot 项目拆分为多个子模块
概要
一、什么是 Maven 项目
Maven 是 Apache 提供的项目构建和依赖管理工具。Maven 项目具有统一的结构,使用 pom.xml
管理依赖、插件和构建流程。
二、新建 Maven 项目
其中红色矩形中的两个怎么选择呢?
1、什么是 Catalog?
Catalog 决定了 archetype(项目模板)的来源。三种 Catalog 类型:
选项 | 说明 | 推荐使用场景 |
---|---|---|
Internal | IDEA 内置的 archetype 列表(很少、更新慢) | 学习或快速测试 |
Default Local | 从你本机的 Maven 仓库中读取你曾经用过的 archetype | 本地曾用过、自己维护模板时 |
Maven Central | 从远程 Maven 中央仓库 实时获取 archetype 列表 | 推荐使用,获取模板最全、最新 |
2、常见 Archetype 模板
Archetype 名称 | 作用 / 用途 |
---|---|
maven-archetype-archetype | 用于创建你自己的 Maven 原型(archetype)项目模板。用于开发者创建自定义的 archetype,通常用于构建团队内部统一模板,适合插件或脚手架开发者使用。 不适合一般开发用作项目启动模板。 |
maven-archetype-j2ee-simple | 用于创建一个简单的 J2EE Web 项目骨架,包括基本的 Servlet 项目结构。(已过时) |
maven-archetype-plugin | 用于创建一个 Maven 插件 项目,适合编写自己的 Maven 插件。 |
maven-archetype-plugin-site | 用于为你的 Maven 插件生成对应的 site 文档项目结构。 |
maven-archetype-portlet | 创建一个基于 Portlet(门户组件) 的 Maven 项目,主要用于 Liferay 或类似门户系统。(现在较少使用) |
maven-archetype-profiles | 用于展示和使用 多配置 Profile 的项目骨架。较小众,适合学习 Maven Profile 配置用。 |
maven-archetype-quickstart | ✅✅✅ 最常用、最推荐的标准 Java 项目模板。生成一个基本的 Java 项目结构,含 Main 类、Test 类、依赖和插件配置,是创建简单 Java 项目的首选。 |
maven-archetype-site | 创建一个 Maven Site 项目(构建项目文档的骨架)。 |
maven-archetype-site-simple | 创建一个 简化版本的 Site 项目。主要用于演示 Maven site 插件功能。 |
maven-archetype-webapp | 用于创建一个基础的 Java Web 应用项目(包括 web.xml 、WEB-INF 等目录结构)。适合学习 Servlet/JSP 或部署到 Tomcat 使用。 |
实战建议(怎么选?)
你的目标 | 推荐 archetype |
---|---|
创建普通 Java 项目 | maven-archetype-quickstart |
创建 Java Web 项目(传统 Servlet/JSP) | maven-archetype-webapp |
创建你自己的项目模板 | maven-archetype-archetype |
想研究或制作 Maven 插件 | maven-archetype-plugin |
不知道选哪个?想快速上手 | ✅ 选 maven-archetype-quickstart 即可 |
三、 将 SpringBoot 项目拆分为多个子模块
Spring Boot 项目在初期单体化开发较为方便,但随着业务复杂度提升,将项目拆分成多个模块(Module) 不仅有助于职责分离,还可以提升团队协作效率、部署灵活性、代码可维护性。
建议将项目拆分为以下模块:
-
common:公共组件与工具类
-
api:接口定义与DTO
-
service:业务逻辑实现
-
web:包含 Controller 和启动入口
依赖关系一般是:web -> service -> data -> common
例如:
springboot-multi-module/
├── pom.xml # 父工程,统一依赖和插件管理
├── common/ # 公共模块(工具类、通用响应封装等)
│ └── pom.xml
├── api/ # 接口模块(DTO、接口声明、Feign 等)
│ └── pom.xml
├── service/ # 业务模块(Service、业务逻辑实现)
│ └── pom.xml
├── web/ # 启动模块(Controller、入口类)
│ └── pom.xml
注意:
Maven 模块之间的依赖具有传递性,如果模块 A 依赖模块 B,模块 B 又依赖模块 C,那么:模块 A 无需显式声明对 C 的依赖,也能使用 C 中的类和资源。
你可以通过以下命令查看传递依赖:mvn dependency:tree【或者点开 pom 文件,看下方的 Dependency Analyzer
】