博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
统计分析工程的依赖项
阅读量:5924 次
发布时间:2019-06-19

本文共 998 字,大约阅读时间需要 3 分钟。

统计分析工程的依赖项

最近在完成自己的想为自己的开源项目application-center增加一个功能:

  • 统计某个jar在哪些工程中被使用
  • 统计某个版本的jar在哪些工程中被使用

应用场景

为什么我想增加一个这个功能呢?设想一下:

某个开源项目的某个版本的代码出现bug或者存在严重的安全隐患,我们想在整个公司层面禁止使用这个开源项目的这个版本。需要知道有哪些工程使用了这个版本的jar。

大致思路

为了解决上面提出的问题,我们的解决思路会是

  • 知道每个工程的依赖项
  • 然后在查找这个工程是否依赖了某个版本的jar

思路很清晰,其实上面两步的重点就是如何知道每个工程的依赖项,有两种思路:

  • 第一种办法是:解析project中的pom.xml文件,分析其中的<dependencyManagement><dependencies>标签,得到工程的依赖项
  • 第二种办法是:因为我这边的工程全部是采用tomcat来运行的,因此可以访问project的/WEB-INF/lib/目录,得到依赖的jars的名称

显然第一种实现思路会比较复杂,因为需要寻找到工程中所有的pom文件,然后需要去解析每个pom文件中的两个标签,然后合并去重等等的一系列操作,比较麻烦。

而第二种就比较取巧了,实现起来比较简单。因此我们采用第二种思路去实现

具体实现

思路明确以后,实现起来非常简单,核心代码只有下面几行:

@Resource    private ServletContext servletContext;        public List
getJarInfos() { String realPath = servletContext.getRealPath("/WEB-INF/lib/"); return Lists.newArrayList(new File(realPath).list()); }

这样我们就会得到一个列表,这个列表就是工程的依赖项

aopalliance-1.0.jar, c3p0-0.9.1.2.jar, classmate-1.1.0.jar, commons-lang3-3.4.jar, ecj-4.4.2.jar, guava-18.0.jar, hamcrest-core-1.3.jar,.....

转载地址:http://stavx.baihongyu.com/

你可能感兴趣的文章
Spring Cloud Config服务器
查看>>
测试人员必学的软件快速测试方法(二)
查看>>
Agora iOS SDK-快速入门
查看>>
引入间接隔离变化(三)
查看>>
统一沟通-技巧-4-让国内域名提供商“提供”SRV记录
查看>>
cocos2d-x 3.0事件机制及用户输入
查看>>
比亚迪速锐F3专用夏季座套 夏天坐垫 四季坐套
查看>>
C++ 数字转换为string类型
查看>>
程序员全国不同地区,微信(面试 招聘)群。
查看>>
【干货】界面控件DevExtreme视频教程大汇总!
查看>>
闭包 !if(){}.call()
查看>>
python MySQLdb安装和使用
查看>>
Java小细节
查看>>
poj - 1860 Currency Exchange
查看>>
chgrp命令
查看>>
Java集合框架GS Collections具体解释
查看>>
洛谷 P2486 BZOJ 2243 [SDOI2011]染色
查看>>
linux 笔记本的温度提示
查看>>
(转)DOTA新版地图6.78发布:大幅改动 增两位新英雄
查看>>
数值积分中的辛普森方法及其误差估计
查看>>