maven 项目下的重复依赖校验
一 背景
来自一位测试同学的需求,历史出现过 Java 同学提交代码后,因为引入重复依赖导致工程报错的问题。所以希望能够尽早排查出重复依赖,或代码中与适用的 jar 包有包名和类名都完全相同的情况。
二 讨论
初步讨论了一下,觉得可以用 jar 包扫描的方式,来提取所有类(及类所在的目录/包),然后进行重复判断。几个关键点:
1、扫描方式
是否有现成的工具或插件提供包扫描功能。最底线的办法,就是手写读取 jar 包内容的方法,实现这个功能;
2、扫描时机
做成 idea 插件形式;
代码提交后触发,这个可以通过 webhook 配置感知检查时机。
3、扫描路径
因为是 maven 工程,所以读取 maven 下工程的构建位置即可。需要获取 maven 的配置信息,在固定环境下,也可以输入一次构建路径,后续直接使用即可。
三 实现尝试
3.1 扫描工具
maven神器插件enforce查找重复类中,提供了几种扫描 jar 包的方法,我们逐个做个验证,看是否可以达到我们预期的效果。
3.2 maven 工程构建路径
这个配置信息,如果开发工具是 idea 的话,可以右键工程的 pom.xml=>maven=>Open Settings.xml 查看:
在打开的 settings.xml 中,<localRepository>标签内就是本地仓库路径:
或者,默认是在~/.m2/settings.xml,可以尝试直接打开这个文件:
vi ~/.m2/settings.xml,定位到本地仓库位置。
3.3 操作实践
参考文章
版权声明: 本文为 InfoQ 作者【程序员架构进阶】的原创文章。
原文链接:【http://xie.infoq.cn/article/c341ce2d3c6fe86171ad9fbfd】。文章转载请联系作者。
评论