• 统计分析工程的依赖项


    统计分析工程的依赖项

    最近在完成自己的想为自己的开源项目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<String> 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,.....
    
  • 相关阅读:
    vant ui 在vue中的安装和使用
    vue-element-admin完整项目实例
    关于Vue中main.js,App.vue,index.html之间关系进行总结
    vue 集成 element ui
    springboot写入数据库汉字变问号???
    import declarations are not supported
    基于Idea从零搭建一个最简单的vue项目
    idea中执行“npm”命令,提示node 不是内部或外部命令,也不是可运行的程序
    Intellij IDEA 中如何 给Maven添加依赖
    圆圈中最后剩下的数字
  • 原文地址:https://www.cnblogs.com/rollenholt/p/5473742.html
Copyright © 2020-2023  润新知