当前位置: 首页 > article >正文

Maven——Maven开发经验总结(1)

摘要

本文总结了 Maven 开发中的多个关键经验,包括如何根据版本号决定推送到 releases 或 snapshots 仓库,如何在构建过程中跳过测试,父项目如何控制子项目依赖版本,父项目依赖是否能传递到子项目,如何跳过 Maven deploy 中的某个 module,以及 Maven package 时如何跳过测试等,为 Maven 开发提供了实用指南。

1. Maven在运行部署的时候是如何确定推送到Releases还是Snapshots仓库

在 Maven 中,部署到 releasessnapshots 仓库的决定是通过版本号来判断的。具体规则如下:

  1. 版本号规则
    • Release 版本:如果版本号不包含 -SNAPSHOT 后缀,Maven 会认为这是一个稳定的发布版本,并会推送到 releases 仓库。例如:1.0.0
    • Snapshot 版本:如果版本号包含 -SNAPSHOT 后缀,Maven 会认为这是一个开发版本,并会推送到 snapshots 仓库。例如:1.0.0-SNAPSHOT
  1. Maven 配置文件(pom.xml: 在你的项目的 pom.xml 文件中,指定仓库的 URL 和仓库的 ID。通常,在 <distributionManagement> 部分,Maven 会配置 releasessnapshots 仓库的地址。例如:
<distributionManagement><repository><id>releases</id><url>https://repo.maven.apache.org/maven2</url></repository><snapshotRepository><id>snapshots</id><url>https://oss.sonatype.org/content/repositories/snapshots/</url></snapshotRepository>
</distributionManagement>

在这里,Maven 会根据你的版本号(是否包含 -SNAPSHOT 后缀)决定将构件部署到哪个仓库。

  1. 部署过程
    • 当你执行 mvn deploy 时,Maven 会根据 pom.xml 中的版本号以及配置文件中的仓库信息判断将构件推送到哪个仓库。
    • 对于 SNAPSHOT 版本,Maven 会推送到 snapshots 仓库,并且通常会带有时间戳,允许多个相同版本的构件在同一时间存在。
    • 对于 release 版本,Maven 会推送到 releases 仓库,并且这个版本通常是稳定的,不会再更新。
  1. 推送行为
    • 对于 SNAPSHOT 版本,Maven 会允许在推送时覆盖同一版本号的构件(如:同一版本的 1.0.0-SNAPSHOT 可以被不同的构建替换),这使得开发过程中可以频繁更新。
  • 对于 release 版本,推送到 releases 仓库时,版本号必须是唯一的,不允许覆盖已发布的版本。

总结来说,版本号的后缀决定了推送目标仓库

  • -SNAPSHOT 推送到 snapshots 仓库。
  • 不含 -SNAPSHOT 的版本推送到 releases 仓库。

2. Maven在构建过程中跳过测试

<build><pluginManagement><plugins><plugin><artifactId>maven-surefire-plugin</artifactId><configuration><!-- 跳过测试 --><skip>true</skip></configuration></plugin></plugins></pluginManagement>
</build>

2.1. Maven Surefire Plugin 的作用

  • Maven Surefire Plugin 是 Maven 的核心插件之一,用于执行单元测试。
  • 默认情况下,Maven 在构建项目时会自动运行 src/test/java 目录下的测试类。
  • 通过配置 <skip>true</skip>,可以跳过测试阶段,从而加快构建速度。

2.2. 实际应用场景

  1. 加快构建速度: 在开发过程中,如果不需要运行测试,可以通过跳过测试来加快构建速度。
  2. 跳过失败的测试: 如果某些测试暂时失败,但需要继续构建项目,可以通过跳过测试来避免构建失败。
  3. 配置统一管理: 在大型项目中,可以通过 <pluginManagement> 集中管理插件配置,确保所有子项目使用相同的插件行为。

2.3. 注意事项

  • 如果需要强制跳过测试,可以在命令行中直接使用 -DskipTests 参数,例如:
mvn clean install -DskipTests
  • 如果只是跳过测试的编译,可以使用 -Dmaven.test.skip=true 参数,例如:
mvn clean install -Dmaven.test.skip=true

3. Maven 项目中父项目pom 控制子项目pom的依赖版本吗?

是的,在 Maven 项目中,pom.xml 可以控制 子模块 (sub-modules) 的依赖版本,主要有两种方式:

3.1. 使用<dependencyManagement> 统一管理版本

推荐做法:在 pom.xml 里使用 <dependencyManagement> 只定义依赖版本,子模块在引入时不需要指定版本。

3.1.1. 父项目 pom.xml

<project><groupId>com.example</groupId><artifactId>parent-project</artifactId><version>1.0.0</version><packaging>pom</packaging><modules><module>sub-module-a</module><module>sub-module-b</module></modules><dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.5</version>  <!-- 统一管理版本 --></dependency></dependencies></dependencyManagement>
</project>

3.1.2. 子项目 pom.xml(无需指定版本)

<project><parent><groupId>com.example</groupId><artifactId>parent-project</artifactId><version>1.0.0</version></parent><artifactId>sub-module-a</artifactId><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
</project>

3.1.3. 优势

  • 子模块无需指定版本,版本由父 pom.xml 控制,保证一致性。
  • 便于升级依赖,只需修改父 pom.xml 中的版本号。

3.2. 直接在 <dependencies> 中定义(不推荐)

如果在 pom.xml 里直接写 <dependencies>,那么子模块会继承这些依赖,但子模块如果有自己的版本,可能会发生冲突

3.2.1. 父项目 pom.xml

<project><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.7.5</version>  <!-- 子模块会自动继承 --></dependency></dependencies>
</project>

3.2.2. 子项目 pom.xml

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

3.2.3. ⚠️ 缺点

  • 子模块无法单独管理依赖版本,可能会与其他依赖冲突。
  • 如果子模块也指定了版本,可能导致版本不一致(依赖冲突)。

3.3. Maven父子项目依赖管理总结

方式

方式 1(✅ 推荐)
<dependencyManagement>

方式 2(⚠️ 不推荐)
直接 <dependencies>

子模块是否需要指定版本

不需要,父 POM 控制

需要,如果不指定可能继承

子模块能否覆盖版本

可以,但默认使用父 POM 版本

可以,但可能会版本冲突

适合多模块项目

,能确保版本统一

,易发生版本冲突

最佳实践

  • 在父 pom.xml 里使用 <dependencyManagement> 统一管理版本
  • 子模块只声明依赖,不要指定版本,避免版本混乱。

这种方式适用于 Spring Boot、MyBatis、Dubbo 等大部分多模块 Maven 项目,能提高维护性和稳定性。🚀

4. 父项目Maven依赖是否可以传递到子项目

一个项目引用了nacos的依赖,这个项目中依赖jar 也使用naocs的配置,请问这个的jar 在打包的时候是否需要使用ncos依赖 进行package 。

在你的项目中,如果引用了 Nacos 作为依赖,并且其他 jar 包也使用了 Nacos 配置,通常来说,这些 jar 包在打包时是否需要包含 Nacos 依赖,取决于你对项目的构建方式和依赖管理的配置。

4.1. 依赖传递(Transitive Dependency):

如果你在主项目中引用了 Nacos 的依赖,并且这个主项目的 jar 包会包含并传递 Nacos 依赖给其他模块,那么其他 jar 包在打包时通常 不需要再单独引用 Nacos,主项目中的 Nacos 依赖会被自动引入。这种情况通常适用于基于 Maven 或 Gradle 构建的项目,依赖会在构建时被传递。

例如,在 Maven 项目中,Nacos 的依赖应该已经在父项目的 pom.xml 中声明:

<dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.x.x</version>
</dependency>

4.2. 独立打包(Standalone Packaging)

如果你要将某些 jar 包独立打包为单独的应用,且这些应用需要独立引用 Nacos 依赖(例如,一个 jar 作为微服务应用单独运行),那么这些 jar 在打包时可能需要单独包含 Nacos 依赖。你可以通过使用 shade 插件(Maven)或其他类似的工具,将所有依赖都打包进最终的 jar 包中。

示例: Maven 中使用 maven-shade-plugin

<plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-shade-plugin</artifactId><version>3.x.x</version><executions><execution><phase>package</phase><goals><goal>shade</goal></goals></execution></executions><configuration><artifactSet><excludes><exclude>com.alibaba.nacos:nacos-client</exclude> <!-- 排除某些依赖 --></excludes></artifactSet></configuration>
</plugin>

4.3. 使用 provided 作用域

如果 Nacos 只在运行时需要(例如在容器或框架中自动注入),你可以将 Nacos 依赖的作用域设置为 provided。这样,Nacos 不会被打包进最终的 jar 中,而是在运行时由外部环境提供。

例如,在 Maven 中设置 Nacos 依赖为 provided

<dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.x.x</version><scope>provided</scope>
</dependency>

4.4. 依赖的 jar 包直接引用 Nacos

如果某些 jar 包本身直接引用了 Nacos,那么它们在编译时会自动将 Nacos 依赖引入。当这些 jar 被打包时,它们会将这些依赖一起打包。如果你使用 fat jaruber jar 方式打包,这些依赖也会被包括进去。

4.5. 依赖传递总结

  • 如果你依赖的 jar 包已经在主项目中引用了 Nacos,且你使用的是 Maven 或 Gradle 等构建工具,通常 不需要再次单独引入 Nacos
  • 如果你希望 独立打包并包含 Nacos,可以使用 shade 插件或者类似的工具。
  • 若 Nacos 仅用于运行时而不需要打包到 jar 中,可以使用 provided 作用域。

根据项目的具体需求和构建方式,你可以选择适合的方式来管理 Nacos 依赖。

5. Maven deploy跳过某个module解决办法

在使用 Maven 时,如果你希望跳过某个模块的 deploy 操作(即不将某个模块部署到远程仓库),可以通过以下几种方法来实现:

5.1. 方法 1:使用 -pl 参数(指定要部署的模块)

你可以使用 -pl 参数来指定需要部署的模块列表,跳过不需要部署的模块。比如,假设你有一个多模块项目,其中有一个模块你不想部署,可以通过指定其它模块来跳过这个模块的部署。

mvn deploy -pl !module-to-skip
  • -pl:指定要构建或部署的模块。
  • !module-to-skip:通过 ! 语法排除 module-to-skip 模块。

5.2. 方法 2:在 pom.xml 中使用 profiles 配置

你可以在 pom.xml 文件中定义一个专门的 Maven profile,并在该 profile 中排除某些模块的构建或部署。通过在构建时激活该 profile 来跳过某个模块。

示例:在父 pom.xml 中配置一个 deploy-skip profile,指定不部署某个模块:

<profiles><profile><id>deploy-skip</id><modules><module>module1</module><module>module2</module><!-- 排除 module-to-skip --></modules></profile>
</profiles>

然后通过 -P 参数激活该 profile:

mvn deploy -Pdeploy-skip

这种方法适用于你有多个环境或配置,并且希望在不同的构建配置下部署不同的模块。

5.3. 方法 3:跳过特定的模块构建和部署

如果你希望完全跳过某个模块的构建或部署,可以通过设置 skip 配置,跳过该模块的构建或 deploy 生命周期。例如,如果某个模块的构建时间较长,或因其他原因不需要部署,可以在其 pom.xml 中添加以下配置来跳过部署:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>3.0.0-M1</version><configuration><skip>true</skip></configuration></plugin></plugins>
</build>

5.4. 方法 4:使用 maven-skip-plugin

有时候,如果你只是想简单地跳过某个模块的构建或 deploy,你可以使用 maven-skip-plugin 插件。在父 pom.xml 或模块 pom.xml 中添加以下配置,来跳过特定模块的 deploy 阶段。

示例:

<plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-deploy-plugin</artifactId><version>3.0.0</version><configuration><skip>true</skip></configuration></plugin>
</plugins>

5.5. 方法 5:临时跳过 deploy 阶段

如果你不想部署某个模块,但又不希望修改 pom.xml 或配置,可以临时使用 -DskipDeploy 来跳过部署:

mvn deploy -DskipDeploy

5.6. 方法 6:使用 mvn install 而不是 deploy

如果你在某个模块不需要将其部署到远程仓库,只是本地构建并安装到本地仓库,可以使用 install 代替 deploy

mvn install

这样该模块会被安装到本地仓库,而不会部署到远程仓库。

6. Maven package 的时候跳过测试。

在使用 mvn package 时,如果你希望跳过测试阶段(即不执行单元测试),可以通过以下几种方式来实现:

6.1. 使用 -DskipTests 参数

这是最常用的方式,使用 -DskipTests 参数来跳过测试的执行。该命令只会跳过测试的执行,而不会跳过编译测试代码。

mvn package -DskipTests
  • -DskipTests:跳过测试执行,测试代码会被编译,但不会运行。

6.2. 使用 -Dtest=false 参数

另一种方式是使用 -Dtest=false 参数,这会告诉 Maven 不执行任何测试。

mvn package -Dtest=false
  • -Dtest=false:强制不执行测试,不会运行任何测试类。

6.3. 使用 -Dmaven.test.skip=true 参数

如果你希望完全跳过测试,包括测试代码的编译和执行,可以使用 -Dmaven.test.skip=true 参数。这会跳过测试的所有阶段,包括编译和执行测试。

mvn package -Dmaven.test.skip=true
  • -Dmaven.test.skip=true:完全跳过测试阶段(包括测试的编译和执行)。

6.4. 在 pom.xml 中配置跳过测试

如果你希望在构建过程中总是跳过测试,可以在 pom.xml 中配置跳过测试的属性。

pom.xml 文件中添加以下配置:

<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><version>3.0.0-M5</version><configuration><skipTests>true</skipTests></configuration></plugin></plugins>
</build>

6.5. Maven跳过总结

  • 使用 -DskipTests:跳过测试执行,但编译测试代码。
  • 使用 -Dtest=false:完全跳过测试,不执行任何测试类。
  • 使用 -Dmaven.test.skip=true:完全跳过测试的编译和执行。
  • pom.xml 中配置 maven-surefire-plugin,永久跳过测试。

博文参考

相关文章:

Maven——Maven开发经验总结(1)

摘要 本文总结了 Maven 开发中的多个关键经验&#xff0c;包括如何根据版本号决定推送到 releases 或 snapshots 仓库&#xff0c;如何在构建过程中跳过测试&#xff0c;父项目如何控制子项目依赖版本&#xff0c;父项目依赖是否能传递到子项目&#xff0c;如何跳过 Maven dep…...

DeepSeek掘金——调用DeepSeek API接口 实现智能数据挖掘与分析

调用DeepSeek API接口:实现智能数据挖掘与分析 在当今数据驱动的时代,企业和开发者越来越依赖高效的数据挖掘与分析工具来获取有价值的洞察。DeepSeek作为一款先进的智能数据挖掘平台,提供了强大的API接口,帮助用户轻松集成其功能到自己的应用中。本文将详细介绍如何调用D…...

gitlab 解决双重认证无法登录remote: HTTP Basic: Access denied.

问题&#xff1a;gitlab开启了双因素认证导致无法正常使用 如进行了 OAuth configuration 在进行git操作时如下提示 remote: HTTP Basic: Access denied. The provided password or token is incorrect or your account has 2FA enabled and you must use a personal access…...

【Microsoft PowerPoint for Mac】2分钟配置-MAC一键删除PPT中的所有备注

MAC一键删除PPT中的所有备注 1.搜索自动操作2.点击快速操作3.搜索并运行AppleScript4.输入代码&#xff0c;并选择只应用于Microsoft PowerPoint for Mac【右上角】5. CRTLS保存为“清除当前文稿中的所有备注”&#xff0c;PPT中应用。 MAC没自带&#xff0c;需要自己配置 1.搜…...

人工智能 阿里云算力服务器的使用

获取免费的阿里云服务器 阿里云免费使用地址&#xff1a; https://free.aliyun.com/ 选择 人工智能平台 PAI 选择交互式建模 再选建立实例。 选择对应的GPU 和镜像&#xff0c;点击确认。 注意&#xff1a;250个小时&#xff0c;用的时候开启&#xff0c;不用的时候关闭&…...

硬核技术组合!用 DeepSeek R1、Ollama、Docker、RAGFlow 打造专属本地知识库

文章目录 一、引言二、安装Ollama部署DeepSeekR1三、安装Docker四、安装使用RAGFlow4.1 系统架构4.2 部署流程4.3 使用RAGFlow4.4 在RAGFlow中新增模型4.5 创建知识库4.6 创建私人助理使用RGA 一、引言 本地部署DeepSeek R1 Ollama RAGFlow构建个人知识库&#xff0c;通过将…...

记录此刻:历时两月,初步实现基于FPGA的NVMe SSD固态硬盘存储控制器设计!

背景 为满足实验室横向项目需求&#xff0c;在2024年12月中下旬导师提出基于FPGA的NVMe SSD控制器研发项目。项目核心目标为&#xff1a;通过PCIe 3.0 x4接口实现单盘3000MB/s的持续读取速率。 实现过程 调研 花了半个月的时间查阅了一些使用FPGA实现NVME SSD控制器的论文、…...

pytorch入门级项目--基于卷积神经网络的数字识别

文章目录 前言1.数据集的介绍2.数据集的准备3.数据集的加载4.自定义网络模型4.1卷积操作4.2池化操作4.3模型搭建 5.模型训练5.1选择损失函数和优化器5.2训练 6.模型的保存7.模型的验证结语 前言 本篇博客主要针对pytorch入门级的教程&#xff0c;实现了一个基于卷积神经网络&a…...

yolov12部署(保姆级教程)

yolov12部署 戳链接访问原论文论文地址 戳链接访问原代码代码地址 直接把源代码以ZIP的形式下载到本地&#xff0c;然后解压用IDE打开就可以了&#xff08;这一步比较简单不过多介绍&#xff09; 在IDE中打开可以看见一个README.md文件&#xff0c;这里有我们将yolov12部署本…...

对免认证服务提供apikey验证

一些服务不带认证&#xff0c;凡是可以访问到服务端口&#xff0c;都可以正常使用该服务&#xff0c;方便是方便&#xff0c;但是不够安全。 比如ollama默认安装后就是这样。现在据说网上扫一下端口11434&#xff0c;免apikey的ollama服务一大堆。。。 那我们怎样将本机安装的o…...

五、Three.js顶点UV坐标、纹理贴图

一部分来自1. 创建纹理贴图 | Three.js中文网 &#xff0c;一部分是自己的总结。 一、创建纹理贴图 注意&#xff1a;把一张图片贴在模型上就是纹理贴图 1、纹理加载器TextureLoader 注意&#xff1a;将图片加载到加载器中 通过纹理贴图加载器TextureLoader的load()方法加…...

汽车零部件工厂如何通过ESD监控系统闸机提升产品质量

在汽车零部件工厂的生产过程中&#xff0c;静电带来的危害不容小觑。从精密的电子元件到复杂的机械部件&#xff0c;静电都可能成为影响产品质量的 “隐形杀手”。而 ESD 监控系统闸机的出现&#xff0c;为汽车零部件工厂解决静电问题、提升产品质量提供了关键的技术支持。 一、…...

Pi币与XBIT:在去中心化交易所的崛起中重塑加密市场

在加密货币市场迅猛发展的背景下&#xff0c;Pi币和XBIT正在成为投资者关注的焦点。Pi币作为一项创新的数字货币&#xff0c;通过独特的挖矿机制和广泛的用户基础&#xff0c;迅速聚集了大量追随者&#xff0c;展示了强大的市场潜力。同时&#xff0c;币应XBIT去中心化交易所的…...

【Python量化金融实战】-第2章:金融市场数据获取与处理:2.1 数据源概览:Tushare、AkShare、Baostock、通联数据(DataAPI)

本章将详细介绍四大主流金融数据源&#xff08;Tushare、AkShare、Baostock、通联数据&#xff08;DataAPI&#xff09;&#xff09;&#xff0c;分析其特点与适用场景&#xff0c;并通过实战案例展示数据获取与处理的全流程。 &#x1f449; 点击关注不迷路 &#x1f449; 点击…...

详解golang的Gengine规则引擎

一:简介 Gengine是一款基于golang和AST(抽象语法树)开发的规则引擎, Gengine支持的语法是一种自定义的DSL, Gengine通过内置的解释器对规则文件进行解析,构建规则模型,进行相应的规则计算和数据处理。Gengine于2020年7月由哔哩哔哩(bilibili.com)授权开源。Gengine现已应用…...

首次使用WordPress建站的经验分享(一)

之前用过几种内容管理系统(CMS),如:dedeCMS、phpCMS、aspCMS,主要是为了前端独立建站,达到预期的效果,还是需要一定的代码基础的,至少要有HTML、Css、Jquery基础。 据说WordPress 是全球最流行的内容管理系统CMS,从现在开始记录一下使用WordPress 独立建站的步骤 选购…...

MySQL缓存命中率

什么是缓存命中率 MySQL 缓存命中率是衡量 MySQL 查询性能的一个重要指标&#xff0c;它表示缓存中的数据被查询请求成功返回的比例。较高的缓存命中率通常意味着较少的磁盘 I/O 操作&#xff0c;查询响应速度较快。MySQL 中有多个类型的缓存&#xff0c;如 查询缓存、InnoD…...

Mysql 主从集群同步延迟问题怎么解决

目录 前言&#xff1a; 复制过程分为几个步骤&#xff1a; 一、同步延迟的危害 二、同步延迟的常见原因 1. 主库写入压力过大 2. 网络传输瓶颈 3. 从库硬件性能不足 4. 配置参数不合理 5. 特殊操作影响 三、深度诊断方法 1. 查看同步状态 2. 性能分析工具 四、十大解…...

【量化科普】Sharpe Ratio,夏普比率

【量化科普】Sharpe Ratio&#xff0c;夏普比率 &#x1f680;&#x1f680;&#x1f680;量化软件开通&#x1f680;&#x1f680;&#x1f680; &#x1f680;&#x1f680;&#x1f680;量化实战教程&#x1f680;&#x1f680;&#x1f680; 在量化投资领域&#xff0c;…...

Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果

目录 一、基本的后处理流程 - 以将画面转化为灰度图为例 1. C#调用shader 2. Shader实现效果 二、Bloom辉光效果 1. 主要变量 2. Shader效果 &#xff08;1&#xff09;提取较亮区域 - pass1 &#xff08;2&#xff09;高斯模糊 - pass2&3 &#xff08;3&#xff…...

vue3中Watch和WatchEffect的用法和区别

目录 Ⅰ.Watch 1.基本用法和三个参数的解析 (1).参数1&#xff1a;需要监听的数据源 (2).参数2&#xff1a;当监听数据发生变化时需要执行的回调函数 (3).参数3&#xff1a;配置选项 深层监听器(多种形式)&#xff1a; 关于watch的返回值问题&#xff1a; Ⅱ .WatchEff…...

Css3重点知识讲解

选择器 优先级&#xff1a; id 选择器 > 类选择器 > 标签选择器 类选择器&#xff1a; .myClass {color: blue; }id 选择器&#xff08;全局唯一&#xff09;&#xff1a; #myId {color: green; }标签选择器&#xff1a; p {color: red; }层次选择器&#xff1a; /…...

三、《重学设计模式》-单例模式

单例模式 单例模式分为四大类&#xff0c;饿汉式、懒汉式、静态内部类、枚举 饿汉式 优点&#xff1a;类装载时进行实例化&#xff0c;避免同步问题 缺点&#xff1a;造成内存浪费 实现一 1.构造器私有化 2.内部创建对象实例 3.提供静态方法 public class Type1 {public s…...

SpringBoot3整合Swagger3时出现Type javax.servlet.http.HttpServletRequest not present错误

目录 错误详情 错误原因 解决方法 引入依赖 修改配置信息 创建文件 访问 错误详情 错误原因 SpringBoot3和Swagger3版本不匹配 解决方法 使用springdoc替代springfox&#xff0c;具体步骤如下&#xff1a; 引入依赖 在pom.xml文件中添加如下依赖&#xff1a; <…...

项目实战--网页五子棋(匹配模块)(4)

上期我们完成了游戏大厅的前端部分内容&#xff0c;今天我们实现后端部分内容 1. 维护在线用户 在用户登录成功后&#xff0c;我们可以维护好用户的websocket会话&#xff0c;把用户表示为在线状态&#xff0c;方便获取到用户的websocket会话 package org.ting.j20250110_g…...

Python闭包知多少

目录 目标 Python版本 概述 实战 基本语法 数据隐藏和封装 延迟计算 回调函数 目标 熟悉闭包语法结构&#xff0c;通过案例来了解闭包的使用场景。 Python版本 Python 3.9.18 概述 闭包&#xff08;Closure&#xff09; 闭包是一个函数对象&#xff08;即内部函数或被…...

【Java毕业设计】商城购物系统(附源码+数据库脚本)

本系统是基于JavaEEServletJSPMysql实现的商城购物系统。包括用户登录、用户注册、商品分类、添加购物车、订单支付等基本功能&#xff0c;具体页面及功能如下&#xff1a; 感谢阅读&#xff01; 如需获取完整项目源码及更多项目信息&#xff0c;可添加V&#xff1a;...

css特异性,继承性

html <div class"introduce"><div class"title">介绍</div><div class"card-box"><div class"card"><div class"title">管理</div></div></div> </div> scs…...

POST请求提交数据的三种方式及通过Postman实现

1、什么是POST请求&#xff1f; POST请求是HTPP协议中一种常用的请求方法&#xff0c;它的使用场景是向客户端向服务器提交数据&#xff0c;比如登录、注册、添加等场景。另一种常用的请求方法是GET&#xff0c;它的使用场景是向服务器获取数据。 2、POST请求提交数据的常见编…...

Spring Boot 整合 Spring MVC /(整合Web)笔记

1. Spring Boot 整合 Web 功能 Spring Boot 通过自动配置简化了 Spring MVC 的集成。只需在 pom.xml 中添加 spring-boot-starter-web 依赖&#xff0c;Spring Boot 就会自动配置 Spring MVC 的相关组件。 <dependency><groupId>org.springframework.boot</gr…...