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

呼和浩特做网站的地方新闻最新热点

呼和浩特做网站的地方,新闻最新热点,福建省人民政府领导班子,怎么用ps做网站框架用Maven定位和解决依赖冲突 一、依赖冲突的常见表现二、定位冲突依赖的4种方法2.1 使用Maven命令分析依赖树2.2 使用IDE可视化工具2.3 使用Maven Enforcer插件2.4 运行时分析 三、解决依赖冲突的5种方案3.1 排除特定传递依赖3.2 统一指定版本(推荐)3.3 使…

用Maven定位和解决依赖冲突

      • 一、依赖冲突的常见表现
      • 二、定位冲突依赖的4种方法
        • 2.1 使用Maven命令分析依赖树
        • 2.2 使用IDE可视化工具
        • 2.3 使用Maven Enforcer插件
        • 2.4 运行时分析
      • 三、解决依赖冲突的5种方案
        • 3.1 排除特定传递依赖
        • 3.2 统一指定版本(推荐)
        • 3.3 使用dependencyManagement
        • 3.4 强制指定版本
        • 3.5 重构依赖结构
      • 四、实战案例:解决Log4j冲突
      • 五、预防依赖冲突的最佳实践
        • 5.1 定期执行依赖检查
        • 5.2 使用BOM统一版本
        • 5.3 分层管理依赖
        • 5.4 使用依赖分析工具
      • 六、常见依赖冲突场景解决方案

一、依赖冲突的常见表现

表现说明
ClassNotFoundException类文件存在但版本不兼容
NoSuchMethodError方法签名在不同版本中不一致
NoClassDefFoundError依赖的依赖缺失
Unexpected Behavior不同版本类实现的差异导致逻辑错误

二、定位冲突依赖的4种方法

2.1 使用Maven命令分析依赖树
# 查看完整依赖树
mvn dependency:tree# 过滤指定依赖(示例查找guava)
mvn dependency:tree -Dincludes=com.google.guava:guava

示例输出

[INFO] com.example:my-project:jar:1.0.0
[INFO] +- com.moduleA:moduleA:jar:2.0:compile
[INFO] |  \- com.google.guava:guava:jar:30.0-jre:compile
[INFO] \- com.moduleB:moduleB:jar:3.1:compile
[INFO]    \- com.google.guava:guava:jar:31.0.1-jre:compile
2.2 使用IDE可视化工具
  • IntelliJ IDEA:右键pom.xml > Maven > Show Dependencies
  • Eclipse:右键项目 > Maven > Show Dependencies
2.3 使用Maven Enforcer插件
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-enforcer-plugin</artifactId><version>3.0.0</version><executions><execution><id>enforce</id><goals><goal>enforce</goal></goals><configuration><rules><dependencyConvergence/></rules></configuration></execution></executions></plugin></plugins>
</build>

冲突时输出

Dependency convergence error for com.google.guava:guava:31.0.1-jre paths to dependency are:
+-com.example:my-project:1.0.0+-com.moduleA:moduleA:2.0+-com.google.guava:guava:30.0-jreand
+-com.example:my-project:1.0.0+-com.moduleB:moduleB:3.1+-com.google.guava:guava:31.0.1-jre
2.4 运行时分析
public class DependencyChecker {public static void main(String[] args) {System.out.println("Guava版本: " + com.google.common.base.Strings.class.getPackage().getImplementationVersion());}
}

三、解决依赖冲突的5种方案

3.1 排除特定传递依赖
<dependency><groupId>com.moduleB</groupId><artifactId>moduleB</artifactId><version>3.1</version><exclusions><exclusion><groupId>com.google.guava</groupId><artifactId>guava</artifactId></exclusion></exclusions>
</dependency>
3.2 统一指定版本(推荐)
<properties><guava.version>31.0.1-jre</guava.version>
</properties><dependencies><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>${guava.version}</version></dependency>
</dependencies>
3.3 使用dependencyManagement
<dependencyManagement><dependencies><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.0.1-jre</version></dependency></dependencies>
</dependencyManagement>
3.4 强制指定版本
<build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-surefire-plugin</artifactId><configuration><argLine>-Dguava.version=31.0.1-jre</argLine></configuration></plugin></plugins>
</build>
3.5 重构依赖结构
<!-- 将共同依赖提升到父POM -->
<dependencies><dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>31.0.1-jre</version></dependency>
</dependencies>

四、实战案例:解决Log4j冲突

初始依赖配置

<dependencies><dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.3.1</version></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.6.3</version></dependency>
</dependencies>

冲突分析

mvn dependency:tree -Dincludes=org.apache.logging.log4j

输出显示

+- org.apache.hadoop:hadoop-common:3.3.1
|  \- org.apache.logging.log4j:log4j-slf4j-impl:2.14.1
\- org.springframework.boot:spring-boot-starter-web:2.6.3\- org.springframework.boot:spring-boot-starter-logging:2.6.3\- org.apache.logging.log4j:log4j-to-slf4j:2.17.1

解决方案

<dependency><groupId>org.apache.hadoop</groupId><artifactId>hadoop-common</artifactId><version>3.3.1</version><exclusions><exclusion><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-slf4j-impl</artifactId></exclusion></exclusions>
</dependency><dependency><groupId>org.apache.logging.log4j</groupId><artifactId>log4j-core</artifactId><version>2.17.1</version>
</dependency>

五、预防依赖冲突的最佳实践

5.1 定期执行依赖检查
mvn versions:display-dependency-updates
5.2 使用BOM统一版本
<dependencyManagement><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>2.6.3</version><type>pom</type><scope>import</scope></dependency></dependencies>
</dependencyManagement>
5.3 分层管理依赖
project-root
├── pom.xml            # 父POM管理公共配置
├── service-module     # 业务模块
└── web-module         # Web模块
5.4 使用依赖分析工具
  • Maven Dependency Analyzer
  • JDepend

六、常见依赖冲突场景解决方案

冲突场景解决方案示例
SLF4J多绑定排除冲突实现排除logback-classic保留log4j-slf4j
Jackson版本差异统一指定版本强制使用2.13.1
Spring不同模块版本使用BOM管理spring-boot-dependencies
Servlet API冲突设置provided scope使用Tomcat提供运行时依赖

在这里插入图片描述

http://www.dtcms.com/wzjs/66457.html

相关文章:

  • 做数学题的网站有吗国外网站推广平台有哪些?
  • 装修公司网站怎么做百度浏览器下载安装
  • 淘宝客推广平台贵阳seo网站管理
  • 网站建设cms铜川网站seo
  • 昆明网站建设开发怎样制作免费网页
  • php网站开发缓存的运用360优化大师官网
  • 江西建设网站外链兔
  • 类似1688的采购平台有哪些长沙seo网站优化
  • 有没有免费做编辑网站管理系统网络营销软件推广
  • 成都网站建设公司官网网络营销企业网站优化
  • 简述网站设计的开发流程青岛谷歌优化公司
  • 做网站建设怎么找客户免费注册
  • 个人网站有什么限制手游推广平台
  • 实验室网站建设seo课程排行榜
  • 怎么知道网站是否被百度收录seo技术最新黑帽
  • 武汉易天时代网络服务有限公司百度seo关键词优化市场
  • wordpress 子域名 函数seo信息优化
  • 北京西站附近景点比百度好用的搜索软件手机版
  • 昆明做网站优化公司潍坊网站seo
  • 用手机怎么做免费网站广东百度seo
  • 有设计师做的装修效果图的网站专业的制作网站开发公司
  • 网站空间域名信息流广告投放工作内容
  • 杭州网站建设过程建设官网的网站首页
  • wordpress设置模板做seo有什么好处
  • 做母亲节网站的素材推广公司属于什么公司
  • 做网站外包哪家好网络营销企业网站推广
  • 北京个人做网站迅雷bt磁力链 最好用的搜索引擎
  • 襄城县做网站的seo标签优化
  • 仙桃做网站的公司云盘搜索引擎入口
  • 自己做网站制作流程宁波seo快速优化平台