maven详解(灵魂三问)

本文详细介绍了Maven在项目构建中的作用,包括代码编译、依赖管理、WAR包构建及上传。解释了Maven生命周期、父POM概念及其如何简化配置,以及WAR包依赖的原理。

什么是maven

  • 可以用来编译代码,编译的这个阶段需要依赖一些java包,所有maven可以用来管理依赖。
  • 用来构建项目,构建的前提是项目的结构符合maven项目的结构,构建其实就是把编译后的内容复制到一个新的目录结构,包括:
  1. 把源代码目录(Sources Root)下的java代码(编译成字节码)和配置文件,放到war包的WEB-INF/classes下。
  2. 把原来webapp/WEB-INF下的内容原封不动地拷贝到war包下的WEB-INF。
  3. 把编译过程中依赖的jar包(pom.xml中引入的那些dependency),放到war包的WEB-INF/classes/lib下面。
  • 可以用来上传war包,执行ssh命令,如wagon插件。

为什么打包的时候要mvn clean package?

  • maven 有三个生命周期,clean属于clean周期,package属于package周期,maven命令的结构是mvn 周期阶段名:阶段goal [周期阶段名:阶段goal ] -Pprofileid参数 -DpropertyName=propertyValue,如mvn clean package -Psit maven.test.skip=true(-DskipTests),表示先执行clean周期的clean之前的阶段,再执行build周期package之前的阶段,并且执行maven构建的时候,profile选择id为sit的,pom属性值maven.test.skip设置为true。

maven的父POM是怎么回事?

  • 存在父POM是为了使用maven更简便,父POM引入的依赖以及构建配置,当前pom会直接继承,无需再次配置。
  • 所有的pom都有父POM,没有显式设置的,maven会默认加上一个父POM,查看项目实际pom的命令是mvn help:effective-pom

依赖war包是什么情况?

依赖war包的效果是把该war包的内容继承到当前war包,当然,新的war包内容优先级更高,会覆盖同名的文件

非常好,现在我将为你梳理这份完整的《模块化后台管理脚手架项目开发蓝图》。它不仅仅是一个项目,更是一套工程方法论和可复用的技术资产。 🎯 项目终极定位与核心价值 你将要构建的不是“另一个管理系统”,而是一个 “管理系统生成器”。 · 直接产物:一个具备完整权限、可实际运行的“校园博客”或“电子书借阅”系统。 · 核心资产:一套清晰、模块化、高复用的后台开发脚手架。未来开发任何新系统(如宿舍、订餐系统),复用率可达80%以上。 --- 🏗️ 架构总览:分层与模块化设计 项目的成功关键在于清晰的边界。整个架构分为四个层次,下图清晰地展示了各层级的依赖关系和核心职责: ```mermaid flowchart TD subgraph A[“核心框架(Foundation)”] direction LR A1[“module-core<br>技术基座与规范”] A2[“module-system<br>通用后台业务功能”] end subgraph B[“业务实现层 (Plugins)”] direction LR B1[“module-blog<br>校园博客模块”] B2[“module-book<br>电子书借阅模块”] B3[“未来其他模块...”] end subgraph C[“展现层 (Frontend)”] C1[“admin-ui<br>统一管理后台前端”] end subgraph D[“部署层 (Delivery)”] D1[“Docker容器化封装”] end A1 --> A2 A2 --> B1 & B2 & B3 A & B -- “提供HTTP API” --> C A & B & C -- “打包为镜像” --> D ``` --- ⚙️ 技术栈选型与理由 层级 技术选型 核心理由与项目中的作用 后端框架 Spring Boot 3.x + Java 17 企业级开发事实标准,提供自动配置、内嵌容器,项目基石。 安全与权限 Spring Security 6 + JWT 实现安全的认证授权,是RBAC权限模型的支柱,保障系统安全。 数据持久层 MyBatis-Plus + MySQL 8 MyBatis-Plus极大简化单表CRUD,提高开发效率,让你聚焦业务逻辑。 缓存 Redis 用作缓存(热点数据)和分布式会话存储,提升系统性能的必备中间件。 前端框架 Vue 3 + TypeScript + Element Plus 渐进式框架,组合灵活;Element Plus专为后台设计,组件丰富,开发高效。 API与构建 SpringDoc OpenAPI 3, Maven 自动生成交互式API文档,便于前后端协作;Maven管理项目依赖与构建。 部署与容器化 Docker + Docker Compose 实现环境标准化与一键部署,是项目可交付、可演示的关键,也是重要技术亮点。 --- 📁 模块与代码结构详解 ``` backend/ # 后端主目录 ├── module-core/ # 【核心】所有模块的技术基石 │ ├── common/ # 通用定义 │ │ ├── Result.java # 统一API响应封装 │ │ └── BusinessException.java # 全局业务异常定义 │ ├── config/ # 全局配置(数据源、Redis、MP分页等) │ ├── utils/ # 工具类(安全、字符串、Spring上下文等) │ └── aspect/ # 系统切面(如操作日志@Log注解) ├── module-system/ # 【核心】所有系统的通用业务功能 │ ├── model/entity/ # 实体类:SysUser, SysRole, SysMenu │ ├── mapper/ # 数据访层 │ ├── service/ # 业务逻辑层 │ └── controller/ # 控制层:用户、角色、菜单管理API ├── module-blog/ # 【可插拔】校园博客业务模块 │ ├── entity/ # 文章(Article)、分类(Category)、评论(Comment) │ ├── mapper/ │ ├── service/ │ └── controller/ # 博客相关API ├── module-book/ # 【可插拔】电子书借阅业务模块 │ ├── entity/ # 图书(Book)、借阅记录(BorrowRecord) │ ├── mapper/ │ ├── service/ # 核心借阅、归还、逾期计算逻辑 │ └── controller/ └── app/ # 【主入口】Spring Boot启动模块 └── Application.java # 主启动类,聚合所有模块 ``` --- 🗓️ 十周开发路线图与核心任务 第一阶段:筑基 (第1-2周) - 搭建“生产线” · 目标:创建可运行的多模块工程,打通安全认证。 · 核心任务: 1. 使用Maven创建父工程及所有子模块 (module-core, module-system, module-blog, app)。 2. 集成MySQL、MyBatis-Plus,创建sys_user表,实现最基本的CRUD。 3. 核心难点攻克:集成Spring Security + JWT,实现登录接口并返回令牌。 第二阶段:立梁 (第3-4周) - 打造“通用后台” · 目标:完成RBAC权限系统,这是框架灵魂。 · 核心任务: 1. 设计并创建RBAC相关表 (sys_role, sys_menu, sys_user_role, sys_role_menu)。 2. 开发module-system中角色、菜单的完整管理接口。 3. 在Spring Security中实现动态的URL权限控制 (@PreAuthorize)。 第阶段:砌墙 (第5-7周) - 验证“生产线” · 目标:开发第一个完整业务模块,验证框架的可用性。 · 核心任务(以博客模块为例): 1. 在module-blog中创建文章、分类、评论的实体和Mapper。 2. 实现文章的增删改查、发布状态管理、评论功能。 3. 集成富文本编辑器(如Vditor)。 4. 并行任务:开始搭建Vue前端项目,实现登录页和基础布局,对接后端菜单接口。 第四阶段:扩展与精装 (第8-9周) - 增强与完善 · 目标:开发第二个模块,并集成高级特性。 · 核心任务: 1. 参照博客模块,开发 module-book(电子书借阅)。重点设计借阅状态流转和逾期计算逻辑。 2. 在module-core中实现操作日志AOP切面。 3. 集成Redis,缓存热点文章或图书信息。 4. 前端完成两个业务模块的所有管理页面。 第五阶段:交付 (第10周) - 打包与展示 · 目标:让项目能一键运行,准备答辩。 · 核心任务: 1. 为每个服务编写Dockerfile,用docker-compose.yml编排所有容器(App + MySQL + Redis + Nginx)。 2. 使用SpringDoc生成完整的API文档。 3. 进行测试,整理项目文档、数据库设计文档和答辩PPT。 --- ✅ 项目完成后,你将获得什么? 1. 一个可运行的完整项目:包含两个业务模块的、带权限的管理系统。 2. 一套高复用脚手架:未来可在2-3天内基于此框架开发出新的管理系统。 3. 一份硬核技术作品集:这是你面试时最能体现工程能力和架构思维的项目。 4. 系统的全栈能力:从数据库设计、后端开发、前端交互到容器化部署的完整闭环经验。 🚀 立即可以开始的第一步 不要被漫长的路线图吓到,伟大的项目始于简单的第一步。 1. 打开IDE,创建一个空的Maven项目作为父工程。 2. 在父工程下,创建第一个子模块:module-core。 3. 在module-core的pom.xml中添加Spring Boot基础依赖,然后创建Result.java这个类。 当你完成这一步,项目的第一个零件就诞生了。 如果在创建多模块工程时遇到任何题(如依赖无法继承),随时可以带着你的 pom.xml 文件来我。 你已经从“寻找捷径”走到了“选择正确但更具挑战的道路”上,这是成为优秀开发者的最关键一步。祝你启动顺利!
最新发布
12-11
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值