# MavenProject
**Repository Path**: sky0535/MavenProject
## Basic Information
- **Project Name**: MavenProject
- **Description**: MavenProject 是一个多模块的 Java 项目,包含多个子模块,用于演示 Maven 在项目构建、依赖管理和模块化开发中的应用。
- **Primary Language**: Unknown
- **License**: MIT
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-07-25
- **Last Updated**: 2026-07-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# MavenProject
## 项目简介
MavenProject 是一个多模块的 Java 项目,包含多个子模块,用于演示 Maven 在项目构建、依赖管理和模块化开发中的应用。项目使用 Java 21 和 Maven 进行构建和管理。
## 项目结构
```
MavenProject/
├── Maven01/ # 基础 Maven 项目演示
├── Maven02/ # 依赖作用域演示
├── Maven03/ # 依赖传递演示
├── Maven04/ # optional 依赖演示
├── Maven05/ # 依赖排除演示
├── MavenResources/ # 资源文件配置演示
├── MavenParent/ # 父工程演示(dependencyManagement + 继承)
│ ├── MavenChild/ # 子工程
│ ├── MavenEntity/ # 子工程(实体层)
│ └── MavenWeb/ # 子工程(Web层,Jetty插件)
├── MavenModules/ # 聚合工程演示(纯聚合,无继承)
└── JavaWeb/ # 完整 Java Web 项目(Servlet + Nexus部署)
```
## 模块说明
### 1. Maven01 - 基础 Maven 项目
**演示概念**:基础 Maven 项目结构、GAV 坐标配置、测试依赖
- 打包方式:`jar`
- 核心配置:标准的 Maven 项目坐标和编译配置
- 依赖:仅包含 JUnit 测试依赖
- 特色:配置了 Nexus 私服部署(release/snapshot 仓库)
### 2. Maven02 - 依赖作用域演示
**演示概念**:依赖作用域(scope)
| 依赖 | 作用域 | 生效阶段 |
|------|--------|----------|
| lombok | compile | 编译、测试、运行 |
| mysql-connector-j | runtime | 测试、运行 |
| junit-jupiter-api | test | 测试 |
| jakarta.servlet-api | provided | 编译、测试 |
### 3. Maven03 - 依赖传递演示
**演示概念**:依赖传递机制
- 依赖 `Maven02`(版本 1.0.2),自动获得其传递依赖
- 展示了 Maven 的依赖传递特性
### 4. Maven04 - Optional 依赖演示
**演示概念**:可选依赖(`true`)
- 配置了 Spring Context、Lombok、Logback
- 将 `logback-classic` 标记为可选依赖,使其不传递给其他项目
### 5. Maven05 - 依赖排除演示
**演示概念**:依赖排除(``)
- 依赖 `Maven04`,但通过 `` 排除了 `spring-context`
- 展示了如何排除不需要的传递依赖
### 6. MavenResources - 资源文件配置演示
**演示概念**:资源文件路径配置
- 在 `pom.xml` 中配置了资源文件扫描路径
- 将 `src/main/java` 目录下的 `.xml` 和 `.properties` 文件也作为资源文件处理
- 包含实体类 `Customer` 和服务接口 `CustomerService`
### 7. MavenParent - 父工程演示
**演示概念**:父工程、dependencyManagement、继承
- 打包方式:`pom`(父工程必须为 pom)
- **聚合**:包含 MavenChild、MavenEntity、MavenWeb 三个子模块
- **依赖管理**:在 `` 中统一声明依赖版本
- **插件管理**:配置 Jetty 插件(端口 8082)
### 8. MavenModules - 聚合工程演示
**演示概念**:纯聚合工程(聚合 ≠ 继承)
- 仅做聚合,不提供依赖管理
- 聚合了 Maven01、Maven02、MavenResources、MavenParent/MavenWeb
### 9. JavaWeb - 完整 Java Web 项目
**演示概念**:Web 项目、Servlet、日志配置、Nexus 部署
- 打包方式:`war`
- 包含多个 Servlet:
- `HelloServlet` - 基础 Servlet 示例
- `FileUploadServlet` - 文件上传示例
- `SetCookieServlet` / `GetCookieServlet` / `ResetCookieServlet` - Cookie 操作
- `SessionServlet` - Session 操作
- `ParameterTestServlet` - 参数测试
- 配置了 Logback 日志框架
- 配置了 Nexus 私服部署
## Maven 生命周期
### default 生命周期
项目构建和部署的完整过程:
```
validate → compile → test → package → verify → install → deploy
```
| 阶段 | 说明 |
|------|------|
| validate | 验证项目基本信息和配置是否完整正确 |
| compile | 编译项目源代码 |
| test | 执行单元测试 |
| package | 将编译后的代码打包(JAR/WAR) |
| verify | 对打包后的内容进行全面质量检查 |
| install | 将打包好的构件安装到本地仓库 |
| deploy | 将构件部署到私服,与其他开发者共享 |
**注意**:某阶段执行时,前面所有阶段会全部执行一遍。
### clean 生命周期
清理构建产物:
```
pre-clean → clean → post-clean
```
| 阶段 | 说明 |
|------|------|
| clean | 核心阶段,删除 target 文件夹 |
### site 生命周期
生成文档和报告:
```
pre-site → site → post-site → site-deploy
```
| 阶段 | 说明 |
|------|------|
| site | 生成项目文档网站,输出到 `target/site` |
| site-deploy | 将网站部署到服务器 |
## 常用命令
```bash
# 编译项目
mvn compile
# 运行测试
mvn test
# 打包(跳过测试)
mvn package -DskipTests
# 安装到本地仓库
mvn install
# 部署到私服
mvn deploy
# 清理构建产物
mvn clean
# 生成文档网站
mvn site
# 执行完整构建(清理 + 编译 + 测试 + 打包)
mvn clean package
# 运行 Jetty(MavenParent/MavenWeb)
cd MavenParent/MavenWeb
mvn jetty:run
```
## 技术栈
- **语言**:Java 21
- **构建工具**:Maven
- **Web 容器**:Jetty 11
- **日志框架**:Logback
- **ORM/工具**:Lombok
- **数据库驱动**:MySQL Connector/J 9.7.0
- **Servlet**:Jakarta Servlet API 6.1.0
- **Spring**:Spring Context 6.2.18(可选)
## 依赖关系图
```
MavenModules(聚合)
├── Maven01(独立)
├── Maven02(独立)
├── MavenResources(独立)
└── MavenParent/MavenWeb(继承自 MavenParent)
MavenParent(父工程)
├── MavenChild(继承,依赖 mysql + logback + spring)
├── MavenEntity(继承,依赖 mysql + lombok)
└── MavenWeb(继承,依赖 spring + servlet)
Maven03 → Maven02(依赖传递)
Maven05 → Maven04(排除 spring-context)
```
## 开发环境
- **IDE**:IntelliJ IDEA / VS Code
- **JDK**:21+
- **Maven**:3.8+