zoukankan      html  css  js  c++  java
  • idea 中解决maven 包冲突的问题(maven helper)

    转载自:https://blog.csdn.net/fnwibwj/article/details/81709733

    冲突问题

    比如项目中引用了两个 fastjson.jar的版本,分别为

    fastjson:1.2.28
    fastjson:1.2.3

    我们用到了1.2.28中的某个类, 比如 A类,在版本更新中 1.2.3版本去掉了这个类,然而我们项目中maven 却把1.2.3的 jar 打包进去了,那我们就会报异常,不存在这个 class,但是我们调错误的时候却发现这个类存在,那我们怎么找到问题根源呢,到底是哪个包的需要Exclude 呢?

    idea 中查看 maven 依赖只会给你一个复杂到极点图,基本没有啥价值,所以要安装个插件 maven helper

    解决问题

    (1)首先安装插件 maven helper(因为我已经安装了,所以没 install 的按钮了)

    (2)安装完成后,在 pom 文件下方会出现这个东西

    (3)点进去你会发现仿佛回到了 eclipse

    (4)接下来到重点了,选中冲突选项 conflicts,这一列都是存在冲突的包

    (5)以fastjson 为例

    (6)当然我们调错误的时候也可以直接搜索有问题的包,如下

    (7)选中右键就可以 Exclude 啦,想用1.2.28就把其他版本的Exclude掉,想用1.2.3就把其他版本的Exclude掉,是不是很方便。

    锁定jar版本

    面对众多的依赖,有一种方法不用考虑依赖路径、声明优化等因素可以采用直接锁定版本的方法确定依赖构件的版本,版本锁定后则不考虑依赖的声明顺序或依赖的路径,以锁定的版本的为准添加到工程中,此方法在企业开发中常用。

    如下的配置是锁定了spring-beans和spring-context的版本

     
      <dependencyManagement>
      	<dependencies>
      		<!--这里锁定版本为4.2.4 -->
      		<dependency>
      			<groupId>org.springframework</groupId>
      			<artifactId>spring-beans</artifactId>
      			<version>4.2.4.RELEASE</version>
      		</dependency>
    		<dependency>
      			<groupId>org.springframework</groupId>
      			<artifactId>spring-context</artifactId>
      			<version>4.2.4.RELEASE</version>
      		</dependency>
      	</dependencies>
      </dependencyManagement>
    

    注意:在工程中锁定依赖的版本并不代表在工程中添加了依赖,如果工程需要添加锁定版本的依赖则需要单独添加<dependencies></dependencies>标签,如下:

    <dependencies>
      		<!--这里是添加依赖 -->
      		<dependency>
      			<groupId>org.springframework</groupId>
      			<artifactId>spring-beans</artifactId>
     		</dependency>
    		<dependency>
      			<groupId>org.springframework</groupId>
      			<artifactId>spring-context</artifactId>
     		</dependency>
      	</dependencies>
    

    上边添加的依赖并没有指定版本,原因是已在<dependencyManagement>中锁定了版本,所以在<dependency>下不需要再指定版本。

  • 相关阅读:
    glog下载、安装、使用
    VS所需插件
    Qt 实现动态调整流程指令顺序(通过鼠标事件实现)
    QComboBox实现复选框功能
    QString string char* int互相转化
    Qt 滚动区域显示下拉框
    模式对话框,非模式对话框,reject和accept()槽函数确定对话框的返回值
    QT递归搜索文件(entryList)
    QT中foreach的使用
    Qstring格式化字符串
  • 原文地址:https://www.cnblogs.com/wbyixx/p/12151150.html
Copyright © 2011-2022 走看看