当前位置: 首页 > ds >正文

IDEA快速上手Maven项目:模板选择 + 多模块拆分

文章目录

    • 概要
    • 一、什么是 Maven 项目
    • 二、新建 Maven 项目
      • 1、什么是 Catalog?
      • 2、常见 Archetype 模板
    • 三、 将 SpringBoot 项目拆分为多个子模块

概要

一、什么是 Maven 项目

Maven 是 Apache 提供的项目构建依赖管理工具。Maven 项目具有统一的结构,使用 pom.xml 管理依赖、插件和构建流程。

二、新建 Maven 项目

在这里插入图片描述

其中红色矩形中的两个怎么选择呢?


1、什么是 Catalog?

在这里插入图片描述

Catalog 决定了 archetype(项目模板)的来源。三种 Catalog 类型:

选项说明推荐使用场景
InternalIDEA 内置的 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.xmlWEB-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

在这里插入图片描述

http://www.xdnf.cn/news/3801.html

相关文章:

  • Spring Boot 微服务打包为 Docker 镜像并部署到镜像仓库实战案例
  • 合成复用原则(CRP)
  • IDEA回滚代码操作
  • Windows下调试WebRTC源码
  • BOSS的收入 - 华为OD机试(A卷,C++题解)
  • 昇腾的昇思MindSpore是什么?跟TensorFlow/PyTorch 等第三方框架有什么区别和联系?【浅谈版】
  • c++ 二级指针 vs 指针引用
  • 小土堆pytorch数据加载概念以及实战
  • 【Tauri2】37——后端处理invoke
  • SVM实战:从理论到鸢尾花数据集的分类可视化
  • skynet中的client.socket库函数详解
  • WebRTC 服务器之Janus架构分析
  • 大模型开发的环节
  • AIGC算力消耗白皮书:Stable Diffusion vs Midjourney的架构成本差异
  • 头歌数据库课程实验(索引与数据库完整性)
  • 从零认识阿里云OSS:云原生对象存储的核心价值
  • 解析机器人 2.0.2 | 支持超过50种短视频平台的链接解析,无水印提取,多功能下载工具
  • 华为OD机试真题——智能驾驶(2025A卷:200分)Java/python/JavaScript/C/C++/GO最佳实现
  • 什么是函数重载?
  • MySQL 空值处理函数对比:IFNULL、COALESCE 和 NULLIF
  • 《Linux macOS :GCC升级方法》
  • 私人医生通过AI分析基因数据,是否有权提前告知癌症风险?
  • 【AI面试准备】XMind拆解业务场景识别AI赋能点
  • QML图像提供器 (Image Provider)
  • 【Ansible自动化运维实战:从Playbook到负载均衡指南】
  • 【算法基础】插入排序算法 - JAVA
  • 怎样增加AI对话的拟人化和增加同理心
  • WEB前端小练习——记事本
  • 先知AIGC超级工场,撬动运营效率新杠杆
  • 在 Trae CN IDE 中配置 Python 3.11的指南