ITKeyword,专注技术干货聚合推荐

注册 | 登录

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

yjclsx 分享于 2016-03-22

推荐:maven项目中自动下载jar包的pom.xml配置

用 maven2 ,pom.xml中设置了依赖,会帮你下载所有依赖的.jar到 M2_REPO 指向的目录    ----------------------------------------------------------------------

2019阿里云全部产品优惠券(新购或升级都可以使用,强烈推荐)
领取地址https://promotion.aliyun.com/ntms/yunparter/invite.html

在一次的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>

推荐:使用assembly将maven项目pom.xml中的jar包打包

方法一:将pom.xml引入的jar包打到zip文件夹中

1、pom.xml的配置 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 <!-- 打包

; <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是个挺实用的方法。

推荐:查lib下的jar来自哪个maven依赖(通过用于解决jar版本冲突)

   选中项目,右键->run as ,选择maven build ...,然后在对话框中的Goals项填入" dependency:tree",再在"debug output"打上勾,并将此项启动的名字改为"showDe

在一次的maven项目中遇到这样一个bug:     编译器没有报什么错,但无法编译,或者能编译,项目启动不了。后来我才发现是以下的问题:     项目中的pom文件中,依赖了webx3.core,而webx3.core

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。