# 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+