JDK长期支持版选择及pom.xml传递依赖漏洞警告消除咨询
问题解答
1. 可升级的下一个长期支持版JDK
当前使用的JDK 15是非长期支持版本(Non-LTS),下一个可用的长期支持版(LTS)是JDK 17。JDK 17是2021年9月发布的LTS版本,提供长达8年的官方支持,且完全兼容你当前的技术栈(Appium 2.x、Java Client 8.x、Selenium 4.x等均支持JDK 17)。
2. 消除pom.xml警告与传递依赖漏洞的方案
针对Checkmarx检测到的三个漏洞,可通过覆盖传递依赖版本或排除不安全依赖并引入安全版本解决,具体操作如下:
(1)修复commons-collections:3.2.2漏洞
commons-collections 3.2.2存在代码执行漏洞,需升级至安全版本(如3.2.3)。在pom.xml中直接声明该依赖的安全版本,Maven会自动覆盖传递依赖:
<dependency> <groupId>commons-collections</groupId> <artifactId>commons-collections</artifactId> <version>3.2.3</version> </dependency>
(2)修复snakeyaml:1.19漏洞
snakeyaml 1.19存在多个高危CVE漏洞,建议升级至2.2及以上稳定版(若存在兼容性问题,可降级选择已修复漏洞的1.33版本)。在pom.xml中声明安全版本:
<dependency> <groupId>org.yaml</groupId> <artifactId>snakeyaml</artifactId> <version>2.2</version> </dependency>
(3)修复guava:25.0-jre漏洞
guava 25.0-jre存在CVE-2020-8908本地权限提升漏洞,需升级至28.0-jre及以上版本,推荐使用最新稳定版32.1.3-jre。声明方式如下:
<dependency> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> <version>32.1.3-jre</version> </dependency>
可选:定位依赖来源
若不确定这些传递依赖来自哪个主依赖,可在项目根目录执行Maven命令查看依赖树:
mvn dependency:tree -Dincludes=commons-collections,snakeyaml,guava
定位后可通过<exclusions>标签在主依赖中排除旧版本,例如:
<dependency> <groupId>xxx</groupId> <artifactId>xxx</artifactId> <version>xxx</version> <exclusions> <exclusion> <groupId>com.google.guava</groupId> <artifactId>guava</artifactId> </exclusion> </exclusions> </dependency>
消除IntelliJ IDEA黄色警告
完成依赖升级后,点击IDEA右侧Maven面板的刷新按钮重新加载项目,黄色警告通常会自动消失。若仍存在,可通过File → Invalidate Caches...清除IDE缓存后重启。
内容的提问来源于stack exchange,提问作者user3780373
相关产品推荐
相关产品推荐

