首页 > 其他分享 >Maven enforcer插件依赖收敛问题

Maven enforcer插件依赖收敛问题

时间:2023-07-11 23:11:11浏览次数:30  
标签:插件 依赖 Analyzer Maven Dependency enforcer

当项目中引入新的jar包或者升级jar后,重新构建Maven项目时常出现这种报错:

Failed to execute goal org.apache.maven.plugins:maven-enforcer-plugin:3.0.0-M2:enforce (enforce-rules) on project xxx-xxxx: Some Enforcer rules have failed.

 

报错信息

 

 从报错信息看和Maven enforcer plugin有关,首先让我们了解一下Maven enforcer。

Maven enforcer是什么

Maven Enforcer插件是一个用于强制执行特定规则的Maven插件。它可以帮助您确保项目中的依赖项和构建环境符合特定的要求,例如强制使用特定版本的Java、强制执行依赖项收敛规则等。Maven Enforcer插件非常有用,可以确保项目的稳定性和可靠性。

Maven Enforcer插件提供了许多规则,可以根据需要进行配置。以下是一些常用的规则:

  • Require Java Version:强制要求使用特定版本的Java。
  • Require Maven Version:强制要求使用特定版本的Maven。
  • Require Plugin Versions:强制要求使用特定版本的插件。
  • Dependency Convergence:强制要求依赖项收敛,即确保项目中只使用一个版本的依赖项。
  • Banned Dependencies:禁止使用特定的依赖项。
  • Require Property:强制要求使用特定的属性。

 

从报错警告信息Dependency Convergence可知,maven-enforcer插件强制要求依赖项收敛时出错,即项目中有多个版本的依赖项。

对项目依赖项进行分析,可以使用mvn dependency命令,这里为了方便查看,使用Dependency Analyzer进行依赖分析。

Dependency Analyzer

Dependency Analyzer是一个开源的Java依赖项分析工具,它可以识别项目中的依赖项,以及这些依赖项之间的关系。使用Dependency Analyzer,可以更轻松地管理项目中的依赖项,并确保它们之间的兼容性和稳定性。

Dependency Analyzer具有以下主要功能:

  1. 识别依赖项:Dependency Analyzer可以扫描项目中的所有依赖项,并将它们列出。包括直接依赖项和传递性依赖项。
  2. 分析依赖项:Dependency Analyzer可以分析依赖项之间的关系,并确定它们之间的兼容性。
  3. 生成报告:Dependency Analyzer可以生成各种报告,例如依赖项列表、依赖项冲突报告等。

Maven-> Analyze Dependencies,点击show conflict only,发现guava的版本有冲突,分别是19.0和31.1-jre。

 或者选中pom.xml文件,点击Dependency Analyzer后选中Conflicts,也说明存在多个guava版本。

 

解决方法

  • 方法一是使用exclusion标签。通过在冲突的jar包的dependency内添加exclusion标签将其中引入的guava版本排除,一般是排除低版本,保留最新的。

  • 方法二是使用 Dependency Management

如果有多个模块或子项目,可以使用 Maven 的 Dependency Management 来集中管理依赖版本。在父项目的 <dependencyManagement> 标签中,指定所有共享依赖的版本。这样,子项目中的依赖可以直接使用指定的版本,而不必依赖传递性版本。

 

参考

https://maven.apache.org/enforcer/maven-enforcer-plugin/

https://stackoverflow.com/questions/16100315/solving-maven-dependency-convergence-issues

https://www.cnblogs.com/qyf404/p/4829327.html

 

标签:插件,依赖,Analyzer,Maven,Dependency,enforcer
From: https://www.cnblogs.com/techs/p/17544811.html

相关文章

  • es笔记四之中文分词插件安装与使用
    本文首发于公众号:Hunter后端原文链接:es笔记四之中文分词插件安装与使用前面我们介绍的操作及演示都是基于英语单词的分词,但我们大部分使用的肯定都是中文,所以如果需要使用分词的操作肯定也是需要使用中分分词。这里我们介绍一下如何安装中文分词插件。在介绍安装之前,我们可......
  • IntelliJ IDEA 最受欢迎的插件有哪些
    IntelliJIDEA是一款功能强大的集成开发环境,支持众多插件扩展。以下是一些在IntelliJIDEA中广受欢迎的插件:Lombok:简化Java代码的编写,自动生成getter、setter、构造函数等常用代码。GitIntegration:提供与Git版本控制系统的集成,方便代码的提交、分支管理和代码审......
  • IntelliJ IDEA 最受欢迎的插件有哪些
    IntelliJIDEA是一款功能强大的集成开发环境,支持众多插件扩展。以下是一些在IntelliJIDEA中广受欢迎的插件:Lombok:简化Java代码的编写,自动生成getter、setter、构造函数等常用代码。GitIntegration:提供与Git版本控制系统的集成,方便代码的提交、分支管理和代码审......
  • SQ工具|9|数据安全|ArcMap自动保存|ArcMap自动备份插件
    可解决在作业过程中停电、软件闪退等一系列问题导致的ArcMap自动退出而未来得及保存数据造成的数据丢失的问题一、自动保存在开启编辑的状态下,设置保存周期,状态选择开启点击确认即可开启自动保存任务(提示框位于右下角)  当一个保存周期内数据未变化时,将不会触发自动保存。......
  • Maven项目中使用Mybatis框架
    一.准备一个空的Maven项目。二.配置pom文件,引入相关依赖。<!--版本建议换成提示的更安全的版本--><!--mybatis插件--><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId>......
  • maven编译平台不同导致编译结果不兼容的问题(windows|linux)intel daal
    1.依赖有依赖如下<dependency><groupId>com.intel.daal</groupId><artifactId>daal</artifactId><version>2019.3.199</version></dependency>2.依赖路径依赖com.intel.daal.daal->com.intel.daal.daal-parent......
  • 一篇文章看懂 Apipost IDEA插件怎么用
    Apipost最近也是推出了IDEA插件,只需要右键upload一下即可自动解析代码注解并快速生成API文档,小编也是试了试,这篇文章给大家带来详细的使用教程。安装ApipostHelper安装Apipost-Helper:打开IDEA,在右侧Plugin中搜索Apipost点击Install下载安装。配置方法:安装成功后要将IDEA内的......
  • 【转载】欢迎使用园子的 vscode 插件
    欢迎使用园子的vscode插件【转载】欢迎使用园子的vscode插件-博客园团队-博客园(cnblogs.com)【转载】博客园团队   为了方便大家通过vscode编辑博文,我们做了一个小插件,插件名称是“博客园Cnblogs客户端”,插件列表中搜索“博客园”或者"cnblogs"可......
  • maven中sqljdbc4.jar无法下载的正确解决办法
     在pom.xml中添加如下依赖是无法导入sqljdbc4.jar包的,maven会报错,找不到依赖,无法下载 我们上maven仓库能够发现有这么一句提示 thisartifactislocatedat Clojars repository(https://clojars.org/repo/)这个jar包是在Clojars仓库里面,我们需要在pom.xml中加上如下......
  • aardio桌面软件开发 简单,打包后文件小,支持 .net python 和 众多插件
    aardio编程语言-官网 aardio ......