Maven传递依赖版本降低

我写了一个模块A依赖了 这个 es client 的jar

<!-- Java High Level REST Client -->  
<dependency>  
     <groupId>org.elasticsearch.client</groupId>  
     <artifactId>elasticsearch-rest-high-level-client</artifactId>  
     <version>6.8.0</version>  
     <exclusions> 
         <exclusion> 
            <artifactId>jopt-simple</artifactId>  
            <groupId>net.sf.jopt-simple</groupId>  
         </exclusion> 
     </exclusions>
 </dependency>

es client 的jar 又 依赖了 es的其他jar

<dependency>  
 <groupId>org.elasticsearch</groupId>  
 <artifactId>elasticsearch</artifactId>  
 <version>6.8.0</version>  
 <scope>compile</scope>  
</dependency>

但是 es jar版本在A模块中,降低了变成了 6.4.3。

声明中明明是6.8.0,这是为什么有人知道吗?

阅读 5.6k
2 个回答

应该是其他的依赖里面引入了6.4.3,可以用如下指令分析一下.

mvn dependency:tree

如果你是IDEA,可以用Maven Helper插件分析。


当发生冲突时候,maven会按照如下方式自动解决冲突:

  1. 优先选择最短路径依赖的版本
  2. 当依赖路径长度相同时,选择先声明的版本

你可以在A模块中声明elasticsearch,使得依赖路径最短。当然,你也可以用exclusions>将6.4.3版本从引入的jar中排除。

<dependency>  
 <groupId>org.elasticsearch</groupId>  
 <artifactId>elasticsearch</artifactId>  
 <version>6.8.0</version>  
 <scope>compile</scope>  
</dependency>
新手上路,请多包涵
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题