怎么样建设个人网站,成都小程序商城开发公司,wordpress列表加载更多,关键词三年级大家好#xff0c;我是烤鸭#xff1a; 整点干货#xff0c;代码级别的版本统一#xff0c;以及漏洞版本的扫描。
背景
两个方面吧。 项目整体的架构不统一#xff0c;springboot/cloud 配置/注册中心也用的不统一#xff0c;版本更是五花八门#xff0c;怎么快速的找…大家好我是烤鸭 整点干货代码级别的版本统一以及漏洞版本的扫描。
背景
两个方面吧。 项目整体的架构不统一springboot/cloud 配置/注册中心也用的不统一版本更是五花八门怎么快速的找到问题给出合理建议。 去年年底的时候都被log4j搞过漏洞安全也被提到第一线快读定位漏洞版本。
思路
先画一个功能大点的业务流程图再从具体某一个点详细说下 架构统一
制定规则比如 都用springbootcloud 配置/注册中心 都用nacos。统一版本像springboot 2.6.7 针对不同的版本用的基础包也不一样尤其是nacos-client这种的spring跨版本这玩意就报错。维护一致性有的项目太老了也不建议一步升级到位需要先小幅升级一个大版本后再继续升级这种的就需要维护一个列表范围以及对应的中间件包。做好升级指南通知提示架构不规范的要做好醒目的提醒和提示类似下面这种。 代码实现
maven-invoker !-- https://mvnrepository.com/artifact/org.apache.maven.shared/maven-invoker --dependencygroupIdorg.apache.maven.shared/groupIdartifactIdmaven-invoker/artifactIdversion3.0.1/version/dependency
指定pom路径下扫描依赖包相当于执行 mvn dependency:list
public ListString mvnDependencyList(String pomPath) {InvocationResult result null;ListString list new ArrayList();try {String mavenHome System.getenv(MAVEN_HOME);InvocationRequest request new DefaultInvocationRequest();request.setPomFile(new File(pomPath));request.setGoals(Collections.singletonList(dependency:list));Invoker invoker new DefaultInvoker();invoker.setMavenHome(new File(mavenHome));invoker.setLogger(new PrintStreamLogger(System.out, InvokerLogger.INFO));final boolean[] isStart {false};invoker.setOutputHandler(hanlder - {if (hanlder.contains(The following files have been resolved) || hanlder.contains(---)) {isStart[0] true;}if (hanlder.contains([INFO] BUILD SUCCESS)) {isStart[0] false;}if (isStart[0]) {list.add(hanlder);}});result invoker.execute(request);} catch (MavenInvocationException e) {e.printStackTrace();}logger.info(mvnDependencyList result [{}],result);return list;
}效果如图
解析每行的版本和版本号和标准的进行匹配。
这个就不贴代码了解析过程也不难。
将解析后的结果存储进行页面展示或者邮件发出。
做成定时个功能可以定期扫描版本。
尤其是针对需要漏洞升级的时候特别管用之前公司出了一版扫描pom文件中的文本内容真的是无力吐槽了maven项目不扫依赖扫文本何况还有多版本冲突问题肯定取实际编译的。
总结
用在公司项目的架构版本统一方便制定规则和监控进度。用于漏洞升级这种特别事件跟上面的功能类似。有git信息了能干的事情就更多了。获取分支、tag、最新代码增量等等做一个效能输出。有了代码还可以干代码级别的扫描坏味道、漏洞等等规范代码维度。…