提问人:Muhammad Towfique Imam 提问时间:10/17/2023 更新时间:10/18/2023 访问量:152
如何在gradle中强制使用传递依赖项(netty-codec-http)的特定版本?
How to force specific version of a transitive dependency (netty-codec-http) in gradle?
问:
我正在尝试将版本用于库,因为 OWASP 依赖项检查器将依赖项标记为 .它被亚马逊依赖性拉出来。这是我的文件。我正在使用 gradle 和 .4.1.100.Final
netty-codec-http
netty*
HIGH
s3
build.gradle
8.3
jdk11
plugins {
id 'java'
id 'org.springframework.boot' version '2.7.16'
id 'io.spring.dependency-management' version '1.0.15.RELEASE'
id "org.owasp.dependencycheck" version "8.2.1"
}
group = 'com.test'
version = '0.0.1-SNAPSHOT'
java {
sourceCompatibility = '11'
}
repositories {
mavenCentral()
}
configurations.all {
resolutionStrategy {
force 'io.netty:netty-codec-http:4.1.100.Final'
}
}
dependencies {
implementation 'org.springframework.boot:spring-boot-starter'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
implementation platform("software.amazon.awssdk:bom:2.21.0")
implementation "software.amazon.awssdk:sdk-core"
implementation "software.amazon.awssdk:s3"
implementation "software.amazon.awssdk:route53"
implementation "software.amazon.awssdk:route53resolver"
}
tasks.named('test') {
useJUnitPlatform()
}
我点击了这个链接在gradle上设置AWS。
依赖项检查器仍显示版本并将其标记为 。我正在使用以下命令生成OWASP报告:4.1.97.Final
HIGH
./gradlew dependencyCheckAnalyze
答:
1赞
Vampire
10/18/2023
#1
首先,您应该停止使用 Spring 依赖管理插件。它是 Gradle 没有内置 BOM 支持的时代过时的遗物,甚至它的维护者也建议不要再使用它。到目前为止,它弊大于利,并没有真正产生任何附加值。相反,您应该只使用内置的 BOM 支持,使用 platform(...)。
这很可能也已经解决了您的问题,因为该插件也像您尝试执行的那样执行类似的强制,并且显然会覆盖您强制版本的尝试。
但实际上,你也不应该对版本进行这种大锤子强制,而是应该设置一个严格的版本约束,就像
dependencies {
constraints {
implementation("io.netty:netty-codec-http:4.1.100.Final!!")
}
}
评论