Java----Maven

发布于:2025-07-15 ⋅ 阅读:(17) ⋅ 点赞:(0)

4. Maven

4.1 Maven 坐标

  • 组成部分:Maven 坐标由groupIdartifactIdversion三部分组成,用于唯一标识资源(如 jar 包 ),方便项目定义自身或引入依赖。

    • groupId:定义项目所属组织名称,通常采用域名反写形式(如 com.itheima ),体现组织或团队归属。
    • artifactId:定义项目(模块)名称,代表具体的项目或模块(如 maven - project01hutool - all ),区分同一组织下不同项目。
    • version:定义项目的版本号,明确项目处于哪个开发阶段或发布版本(如 1.0 - SNAPSHOT5.8.27 )。

4.2 Maven 项目版本分类

  • SNAPSHOT(快照版本):功能不稳定,处于开发中的版本。常用于团队内部开发迭代阶段,方便及时获取最新开发成果,依赖此版本时,Maven 可能会主动更新获取最新快照 。
  • RELEASE(发布版本):功能趋于稳定,当前更新停止,可用于发行的版本。代表项目已成熟,适合正式环境使用,版本发布后一般不会再随意变更内容 。

4.3 Spring Boot 基础依赖

Spring Boot 提供的 starter 依赖已集成自动配置,无需手动指定版本(由 Spring Boot 父工程统一管理),坐标如下:

  • spring-boot-starter-web

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    

    Web 开发核心依赖,包含 Spring MVC、Tomcat 等。

  • spring-boot-starter-webflux

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-webflux</artifactId>
    </dependency>
    

    响应式 Web 开发组件,基于 Reactor 框架。

  • spring-boot-starter-test

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-test</artifactId>
        <scope>test</scope> <!-- 仅测试环境生效 -->
    </dependency>
    

    测试依赖,包含 JUnit、Mockito 等工具。

  • spring-boot-devtools

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
        <optional>true</optional> <!-- 运行时生效,避免传递依赖 -->
    </dependency>
    

    热部署工具,支持代码修改后自动重启。

  • spring-boot-starter-actuator

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    

    应用监控组件,提供健康检查、指标收集等功能。

4.4 简化代码:Lombok

  • 坐标:

    <dependency>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.38</version>
        <optional>true</optional> <!-- 避免传递依赖 -->
    </dependency>
    
  • 作用:通过注解(如 @Data @Getter)简化实体类代码,自动生成 getter/setter 等。

4.5 数据库与持久化

  • Druid 连接池

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid</artifactId>
        <version>1.1.10</version>
    </dependency>
    

    阿里开发的连接池,支持监控、防 SQL 注入。

  • MyBatis 集成 Spring Boot

    <dependency>
        <groupId>org.mybatis.spring.boot</groupId>
        <artifactId>mybatis-spring-boot-starter</artifactId>
        <version>2.3.1</version> <!-- 需与 Spring Boot 版本兼容 -->
    </dependency>
    

    简化 MyBatis 配置,支持 XML / 注解方式 CRUD。

  • MySQL 驱动

    <dependency>
        <groupId>com.mysql</groupId>
        <artifactId>mysql-connector-j</artifactId>
        <version>8.0.32</version>
    </dependency>
    

    Java 连接 MySQL 的 JDBC 驱动。

4.6 其他工具

  • Fastjson JSON 解析

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>fastjson</artifactId>
        <version>1.2.56</version>
    </dependency>
    

    阿里开发的 JSON 工具,用于对象与 JSON 字符串互转。

4.7 扩展:AI 与文档处理(结合 Spring AI)

  • 阿里云 Spring AI Starter

    <dependency>
        <groupId>com.alibaba.cloud.ai</groupId>
        <artifactId>spring-ai-alibaba-starter</artifactId>
        <version>1.0</version>
    </dependency>
    

    集成阿里云 AI 能力(模型调用、智能服务)。

  • Spring AI 文档解析

    <dependency>
        <groupId>org.springframework.ai</groupId>
        <artifactId>spring-ai-tika-document-processor</artifactId>
        <version>0.8.1</version> <!-- 需与 Spring AI 版本匹配 -->
    </dependency>
    

    结合 Apache Tika 解析 PDF、Word 等文档内容。

4.8 生命周期(标准化构建流程)

Maven 定义的阶段任务(按执行顺序):

  1. clean:删除 target 目录(编译 / 打包产物)
  2. validate:校验 pom.xml 格式及依赖完整性
  3. compile:编译 src/main/java.class 文件
  4. test:执行 src/test/java 单元测试(需 JUnit 等框架)
  5. package:打包为 JAR/WAR(输出到 target 目录)
  6. verify:验证打包产物(代码检查、覆盖率报告等)
  7. install:安装产物到本地仓库(供本地其他项目依赖)
  8. site:生成项目站点文档(需额外配置)
  9. deploy:发布产物到远程仓库(如公司私服,供团队共享)

4.9 插件(任务执行者)

插件绑定到生命周期阶段,常用插件及坐标:

  • clean 插件(清理 target

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-clean-plugin</artifactId>
        <version>3.2.0</version>
    </plugin>
    
  • 编译插件(指定 JDK 版本)

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.11.0</version>
        <configuration>
            <source>17</source> <!-- 源码 JDK 版本 -->
            <target>17</target> <!-- 编译后字节码版本 -->
        </configuration>
    </plugin>
    
  • Spring Boot 插件(打包可执行 JAR)

    <plugin>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-maven-plugin</artifactId>
        <version>3.2.0</version> <!-- 与 Spring Boot 版本一致 -->
    </plugin>
    
  • 其他插件maven-jar-plugin(打包 JAR)、maven-deploy-plugin(部署到远程仓库)等。

4.10 仓库(依赖存储位置)

  • 本地仓库:默认路径 C:\Users\用户名\.m2\repository(可自定义,如 D:\m1),存储下载的依赖和本地 install 产物。
  • 远程仓库:
    • 中央仓库:https://repo.maven.apache.org(公共依赖源)
    • 公司私服:如 Nexus(团队内部共享依赖)
    • 框架仓库:如 Spring 仓库(提供框架专属依赖)

Maven 优先从本地仓库获取依赖,不存在则从远程仓库下载。

4.11 maven依赖配置过程

依赖指当前项目运行所需的 jar 包,一个项目可引入多个依赖。

(1) 配置步骤
  1. 编写标签:在 pom.xml 中编写 <dependencies> 标签,用于包裹项目所有依赖配置。
  2. 引入坐标:在 <dependencies> 标签内,用 <dependency> 引入具体依赖坐标。
  3. 定义坐标信息:每个 <dependency> 需定义 groupId(组织 / 公司标识)、artifactId(项目 / 模块标识 )、version(版本号 ),示例:
<dependency>
    <groupId>org.springframework</groupId>
    <artifactId>spring - context</artifactId>
    <version>6.1.4</version>
</dependency>
  1. 刷新依赖:添加完依赖坐标后,点击相应刷新按钮(不同开发工具操作有别,如 IDEA 中 Maven 窗口的刷新按钮 ),引入新添加坐标对应的 jar 包。
(2) 官网查找

若不清楚依赖坐标,可到 https://mvnrepository.com/ 搜索,该网站提供丰富开源库的 Maven 坐标信息 。

(3) 排除依赖
<exclusions>
    <exclusion>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-tika-document-reader</artifactId>
    </exclusion>
</exclusions>


网站公告

今日签到

点亮在社区的每一天
去签到