Maven的Pom文件中的隐式依赖导致Jar包冲突的问题

Posted swnchx

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Maven的Pom文件中的隐式依赖导致Jar包冲突的问题相关的知识,希望对你有一定的参考价值。

在一次的maven项目中遇到这样一个bug:

    编译器没有报什么错,但无法编译,或者能编译,项目启动不了。后来我才发现是以下的问题:

    项目中的pom文件中,依赖了webx3.core,而webx3.core又隐式依赖了fasttext相关的jar包,同时我在pom中也引人了fasttext.all,

    fasttext.all也隐式依赖了fasttext相关的jar包,两类jar包版本还不一样,这样就导致了jar包冲突的问题,牵扯到的pom文件依赖如下:

<dependency>
<groupId>com.alibaba.platform.shared</groupId>
<artifactId>webx3.core</artifactId>
</dependency>

<dependency>
<groupId>com.alibaba.platform.shared</groupId>
<artifactId>fasttext.all</artifactId>
</dependency>

那怎么查看这种jar包冲突问题呢?

eclipse提供了对隐式依赖jar包的查看功能:在eclipse中打开一个pom文件,在Dependency Hierarchy的Tab页中,就可以查看当前pom文件中显示声明的jar包,及这些显示声明的jar中隐式引入的依赖jar包,我在这里搜索fasttext,就可以清楚的看到了,一个依赖了1.3.5版本的,一个依赖了1.3-SNAPSHOT版本的。技术分享图片

技术分享图片
    发现了问题就简单了,只要通过排除webx3.core中的fasttext的依赖,就解决了上述冲突的问题:
<dependency>
<groupId>com.alibaba.platform.shared</groupId>
<artifactId>webx3.core</artifactId>
<exclusions>
<exclusion>
<artifactId>jakarta.commons.codec</artifactId>
<groupId>com.alibaba.external</groupId>
</exclusion>
<exclusion>
<groupId>com.alibaba.platform.shared</groupId>
<artifactId>fasttext-css</artifactId>
</exclusion>
<exclusion>
<groupId>com.alibaba.platform.shared</groupId>
<artifactId>fasttext-psoriasis</artifactId>
</exclusion>
<exclusion>
<groupId>com.alibaba.platform.shared</groupId>
<artifactId>fasttext-sec</artifactId>
</exclusion>
<exclusion>
<groupId>com.alibaba.platform.shared</groupId>
<artifactId>fasttext-segment</artifactId>
</exclusion>
</exclusions>
</dependency>
对应排除,改bug是个挺实用的方法。

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!希望你也加入到我们人工智能的队伍中来!http://www.captainbed.net



































以上是关于Maven的Pom文件中的隐式依赖导致Jar包冲突的问题的主要内容,如果未能解决你的问题,请参考以下文章

如何配置maven pom文件来解决jar包冲突

maven依赖导致的jar包冲突解决方式

maven依赖导致的jar包冲突解决方式

如何删除maven中冲突的jar包

没有版本的jar包怎么在maven 里的pom配置

Maven依赖jar包版本冲突解决方案