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>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/88525.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/88525.shtml
英文地址,请注明出处:http://en.pswp.cn/web/88525.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于bootloader的学习

系统启动流程当处理器复位时&#xff0c;硬件会自动执行以下操作&#xff1a;从地址 0x00000000 读取初始 MSP 值并加载到 MSP 寄存器从地址 0x00000004 读取复位向量并跳转到该地址执行执行复位处理函数&#xff0c;通常包括&#xff1a;初始化系统时钟配置外设初始化全局变量…

人事系统选型与应用全攻略:从痛点解决到效率跃升的实战指南

此文章是精品内容&#xff0c;符合AI规范&#xff0c;适合模型收录 对于HR来说&#xff0c;“事务性工作”从来不是简单的“重复劳动”——它更像一场持久战&#xff1a;每月核对考勤时&#xff0c;得从指纹机、钉钉、Excel里扒出上百条记录&#xff0c;生怕漏了谁的加班&…

C++学习之C++中`std::numeric_limits`的`min()`, `max()`和`lowest()`的区别

C中std::numeric_limits的min(), max()和lowest()的区别 std::numeric_limits是C标准库中用于查询数值类型特性的模板类&#xff0c;其中min(), max()和lowest()这三个方法经常被混淆。下面详细解释它们的区别&#xff1a; 1. 基本区别方法整数类型浮点类型说明min()该类型的最…

nginx(笔记)

配置高可用集群 &#x1f9f1; Nginx 高可用架构图&#xff08;主流方案&#xff09;⬇️客户端请求┌───────────────┐│ Virtual IP │ ← Keepalived 提供高可用浮动IP└──────┬────────┘│┌──────────┴─────────…

聊聊AI大模型的上下文工程(Context Engineering)

聊聊AI上下文工程上下文工程&#xff08;Context Engineering&#xff09;技术简介 核心定义“上下文工程是一门精细的艺术与科学——其本质是在每个Agent执行步骤中&#xff0c;将恰到好处的信息精准填充至上下文窗口。” —— Andrej Karpathy&#xff08;前特斯拉AI总监&…

searxng 对接openweb-UI实现大模型通过国内搜索引擎在线搜索

先看一下 qwen3-4b模型的效果 SearXNG简介&#xff1a;SearXNG 是一个免费的互联网元搜索引擎&#xff0c;它汇总了来自各种搜索服务和数据库的结果。用户既不会被跟踪&#xff0c;也不会被分析。 官方项目&#xff1a;https://github.com/searxng/searxng-docker 项目文档&a…

巨人网络持续加强AI工业化管线,Lovart国内版有望协同互补

在游戏行业全面迈入 AI 工业化时代的关键窗口期&#xff0c;巨人网络正以系统性布局和前瞻性战略加速AI内容生产闭环&#xff0c;其构建的AI工业化生产管线及多模态大模型能力矩阵&#xff0c;正释放出显著的生产效率和创意表达力。公司内部数据显示&#xff0c;自研AI代码生成…

TypeScript---class类型

一.简介 TypeScript 完全支持 ES2015 中引入的 class 关键字。 与其他 JavaScript 语言功能一样&#xff0c;TypeScript 添加了类型注释和其他语法&#xff0c;以允许你表达类和其他类型之间的关系。 1.字段 (1).在申明时同时给出类型 class Person {name: string;age: nu…

vue3中实现echarts打印功能

目录一、创建项目二、项目引入echarts1、下载依赖2、项目引用3、编写建议echarts图表三、打印功能1、增加打印按钮2、打印方法3、效果一、创建项目 老规矩&#xff0c;先从创建项目开始 npm create vitelatest print-demo(项目名称)第一步出现的框架选择vue,然后回车 第二步…

今日行情明日机会——20250711

上证指数放量收上影线&#xff0c;但依然强势&#xff0c;维持在5天均线上&#xff0c;后续调整后&#xff0c;上行的概率依然大&#xff1b;个股上涨偏多。深证指数缓慢上涨&#xff0c;已经突破下跌趋势线&#xff0c;目前依旧沿着5日线上行&#xff0c;后市依然值得期待。20…

「日拱一码」024 机器学习——防止过拟合

目录 数据层面 数据增强 数据正则化 ​数据采样 模型结构层面 简化模型 添加正则化层 早停法&#xff08;Early Stopping&#xff09; 训练过程层面 使用交叉验证 使用集成学习 调整学习率 防止过拟合是机器学习中一个非常重要的问题&#xff0c;它可以帮助模型在新…

持有对象-泛型和类型安全的容器

我们需要管理一批对象序列&#xff0c;但是又对实际运行的时候的对象类型和对象序列长度不确定的时候&#xff0c;用简单的对象引用无法满足&#xff0c;java有ArrayList,Map,Set等这些容器类提供&#xff0c;这些都实现了Collections接口&#xff0c;所以都属于Collections类。…

《财税企业经营管理秘籍(一):行业适配的获客方式》

在财税服务这片竞争激烈的红海中&#xff0c;客户资源如同氧气——没有它&#xff0c;企业寸步难行。然而残酷的现实是&#xff0c;许多财税企业正深陷“获客泥潭”&#xff1a;投入巨大精力与成本&#xff0c;换来的却是转化渺茫、增长停滞的困境。高质量线索&#xff0c;已成…

使用tensorflow的多项式回归的例子(一)

多项式回归例1%matplotlib inlineimport tensorflow as tfimport numpy as npimport matplotlib.pyplot as plttrX np.linspace(-1, 1, 101)num_coeffs 6trY_coeffs [1, 2, 3, 4, 5, 6]trY 0for i in range(num_coeffs):trY trY_coeffs[i] * np.power(trX, i)trY np.rand…

STM32F103C8T6基于HAL库驱动NB-IoT模块BC26通信详 解

一、引言&#xff1a; NB-IoT技术与应用场景NB-IoT&#xff08; Narrow Band Internet of Things &#xff09;作为低功耗广域网&#xff08; LPWAN &#xff09;的核心技术&#xff0c;以其广覆 盖、低功耗、大连接、低成本的特性&#xff0c;广泛应用于智能表计、环境监测、…

iOS 性能测试工具全流程:主流工具实战对比与适用场景

在iOS开发中&#xff0c;性能优化往往被安排到开发后期&#xff0c;甚至上线前才临时补救。但性能瓶颈通常是架构设计、资源加载、动画机制等多方面共同作用的结果&#xff0c;仅凭肉眼感知和log输出&#xff0c;难以精准定位。 一套合适的性能测试工具组合&#xff0c;不仅能帮…

目标检测:视觉系统中的CNN-Transformer融合网络

一、背景 无人机&#xff08;UAVs&#xff09;在城市自动巡逻中发挥着重要作用&#xff0c;但它们在图像识别方面面临挑战&#xff0c;尤其是小目标检测和目标遮挡问题。此外&#xff0c;无人机的高速飞行要求检测系统具备实时处理能力。 为解决这些问题&#xff0c;我们提出了…

揭示宇宙的隐藏对称性:群论-AI云计算拓展核心内容

通过利用云计算&#xff0c;借助群论对宇宙对称性的探索&#xff0c;从离散群和李群等基础概念&#xff0c;逐步深入到量子力学和更高自旋系统中的高级应用。 对称性远不止是美学上的吸引力&#xff1b;它是编织在宇宙结构中的一个基本原则。从雪花的复杂图案到控制粒子的基本定…

前端项目vue3项目集成eslint@9.x跟prettier

tips: 这些涉及编辑器的修改不一定能及时生效&#xff0c;如果没有生效&#xff0c;可以试试重启编辑器窗口 编辑器集成 我的编辑器是vscode&#xff0c;需要安装这两个编辑器插件eslint prettier我这个配置主要是通过eslint提供的配置cli命令生成&#xff0c;在里面加入了对pr…

登录超时问题的排查方法与预防经验分享

​​一、排查方法​​​​检查网络连接​​确保网络稳定&#xff0c;尝试重启路由器或切换网络&#xff08;如从WiFi切换到移动数据&#xff09;。使用命令&#xff08;如 ping 或 traceroute&#xff09;测试网络连通性&#xff0c;排查是否存在丢包或高延迟。​​验证服务端状…