您的位置:首页 > 其它

通过enforcer插件定位jar包或类冲突问题

2016-12-22 10:27 357 查看
jar包或者类冲突,一般日志中出现类似于:

java.lang.NoClassDefFoundError,java.lang.NoSuchMethodError,java.lang.NoSuchFieldError,java.lang.NoSuchMethodException,java.lang.LinkageError,java.lang.ClassNotFoundException

首先在maven插件中添加enforcer插件:

然后输入maven命令来查找重复类和存在版本限制和冲突的jar包:

mvn -U clean package -Dmaven.test.skip=true enforcer:enforce -DcheckDeployRelease_skip=true

会看到相关的输出,一个个排查即可:

存在重复的类的情况:

不允许的依赖jar包或不允许的依赖版本号:

最后根据插件排查下来的信息,一个个排除掉存在冲突的jar包即可。注意如果是parent pom当中的依赖冲突,要在parent pom中修改,否则无法排除。

福利:使用idea的同学,推荐使用maven helper插件排除冲突,一目了然,很好用。

enforcer插件参考文档:

http://www.tuicool.com/articles/RfIBfa

https://github.com/dimitri-koussa/maven-enforcer-duplicate-class-check

http://www.mojohaus.org/extra-enforcer-rules/banDuplicateClasses.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  maven