Maven的Pom文件中的隐式依赖导致Jar包冲突的问题
2016-03-22 15:08
615 查看
在一次的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版本的。
![](http://img.blog.csdn.net/20160322162948426?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQv/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)
发现了问题就简单了,只要通过排除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是个挺实用的方法。
编译器没有报什么错,但无法编译,或者能编译,项目启动不了。后来我才发现是以下的问题:
项目中的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是个挺实用的方法。
相关文章推荐
- iOS代码片段CodeSnippets
- eclipse配置maven (三)
- vc-获取程序当前绝对路径
- Apache CXF REST 文件上传,form提交和json提交。
- 结队项目心得
- Android 简单实现ListView顶部悬浮效果
- 剑指offer 3 从尾到头打印链表
- Spark参数有效配置
- 40个Java集合面试问题和答案
- WdatePicker插件限制两个日期不得超过90天
- Verilog入门实例
- hdu 1867 A + B for you again
- Mac OS X EI Captitan 中Apache开启SSL (HTTPS)
- hibernate逻辑
- Android数据库ORM框架用法、源码和性能比较分析
- 判断鼠标滚动方向
- Verilog入门实例
- MySQL create table 语法
- TortoiseGIT的安装过程详解
- 避免Java应用中NullPointerException