我有一个带有pom文件中的依赖项的maven项目。对于那些直接依赖项,我们有大量的传递依赖项。这些临时依赖项的版本存在一些安全问题。那么,我是否可以更改这些临时依赖项的版本呢?
发布于 2022-01-06 13:16:19
解决方案1)只需使用较新的版本添加对该传递依赖的直接依赖即可。
如果项目myProject 1.0依赖于A1.2,而A1.2依赖于B2.3,那么我的项目的类路径中将有以下jars :myProject1.0、A1.2和B2.3。
但是如果myProject 1.0也依赖于B2.4,那么我的项目的类路径中将有以下jars :MyProject1.0、A1.2和B2.4。它不会在类路径中包含B2.3,因为Maven检测到两个B都使用相同的groupId和artifactId,所以在项目pom中定义的那个就赢了。
试着了解那里发生了什么,运行mvn dependency:tree -Dverbose。
这种方法的缺点:当您升级到依赖于B2.5的A1.3时,您可能会在B2.4中运行A1.3(因为您仍然覆盖它),并在运行时获得一个NoSuchMethodError。
解决方案2)使用一个平台bom,为您找到一组兼容的依赖关系版本,并为每个和所有CVE的依赖版本发布一个新版本,例如:夸库斯或Spring。
这种方法的缺点:您需要的特定依赖可能不在其中,从而使您回到了解决方案1)。
https://stackoverflow.com/questions/70606581
复制相似问题