Maven集成SonarQube时传递依赖版本覆盖失效问题求助
问题背景
我正在开发一个使用sonar-maven-plugin的Java项目,该插件通过sonar-scanner-api间接依赖Okio(1.17.2版本)和OkHttp(3.14.2版本),这两个版本存在安全漏洞。
我尝试在pom.xml中排除旧版本并显式添加更新版本(OkHttp 4.12.0、Okio 3.6.0),包括在dependencyManagement中声明、移至dependencies并排除插件的传递依赖,但构建时仍使用旧版本,SonarQube也持续报告相关漏洞。
已尝试的操作
1. 在dependencyManagement中添加更新后的依赖
<dependencyManagement> <dependencies> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.12.0</version> </dependency> <dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> <version>3.6.0</version> </dependency> </dependencies> <dependencyManagement>
2. 将依赖移至dependencies并排除插件的传递依赖
<dependencies> <dependency> <groupId>org.sonarsource.scanner.maven</groupId> <artifactId>sonar-maven-plugin</artifactId> <version>4.0.0.4121</version> <scope>provided</scope> <exclusions> <exclusion> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> </exclusion> <exclusion> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> </exclusion> </exclusions> </dependency> <dependency> <groupId>com.squareup.okhttp3</groupId> <artifactId>okhttp</artifactId> <version>4.12.0</version> </dependency> <dependency> <groupId>com.squareup.okio</groupId> <artifactId>okio</artifactId> <version>3.6.0</version> </dependency> </dependencies>
核心问题
- 为何已排除旧版本并显式声明新版本,Maven仍解析旧版OkHttp和Okio?
- Maven构建生命周期中是否存在插件依赖覆盖排除或新增依赖的特定阶段?
- 还有哪些步骤或策略可确保使用更新版本而非传递依赖?
补充信息
- Maven版本:3.9.6
- Java版本:17.0.7
- SonarQube插件版本:4.0.0.4121
- 操作系统:Windows 11
- 项目结构:
parent-pom ├── submodule1 └── submodule2
内容的提问来源于stack exchange,提问作者Cthaeh
相关产品推荐
相关产品推荐

