在gradle中强制执行深度传递依赖

在gradle中强制执行深度传递依赖,gradle,Gradle,我正在我的项目中使用gradle版本4.X。我想强制将可传递的jar转换为特定的版本。我跟着。但这里的问题是,我想强制使用的jar版本存在深层次的问题 示例: 下面是build.gradle文件 这里的问题是“spring boot starter jersey:1.5.21”使用了“logback classic:1.1.11”。现在,force命令应该可以工作,以便升级到logback版本1.2.0。问题来了 logback classic不直接依赖于spring boot运动衫。依赖关系树

我正在我的项目中使用gradle版本4.X。我想强制将可传递的jar转换为特定的版本。我跟着。但这里的问题是,我想强制使用的jar版本存在深层次的问题

示例:

下面是build.gradle文件

这里的问题是“spring boot starter jersey:1.5.21”使用了“logback classic:1.1.11”。现在,force命令应该可以工作,以便升级到logback版本1.2.0。问题来了

logback classic不直接依赖于spring boot运动衫。依赖关系树如下所示

+--- org.springframework.boot:spring-boot-starter-jersey -> 1.5.21.RELEASE
     +--- org.springframework.boot:spring-boot-starter:1.5.21.RELEASE
          +--- org.springframework.boot:spring-boot-starter-logging:1.5.21.RELEASE
              +--- ch.qos.logback:logback-classic:1.1.11 (*)

如何在gradle中实现这一点?

您可以发布build.gradle文件(或示例)吗?当然,我将使用特定用例更新此问题您现有的build.gradle文件已经满足了您的需要。您还可以向ch.qos添加一个显式的直接依赖项。logback:logback classic:1.2.0:最高版本获胜。到底是什么问题?为什么你认为你所拥有的不起作用?@JBNizet是的,我可以直接编译“logaback:1.2.0”,这会赢,但这不是我想要的。这个配置不起作用,伙计,因为在jersey和logback之间有更多相互依赖的jar。我不知道这为什么不起作用。我的项目是一个多项目目录结构。当使用Spring Boot时,它会用一些令人头痛的错误行为覆盖Gradle提供的正确行为。文件在这里,但要准备好撕下任何剩余的头发。特别是,如果您有一些依赖项(例如
compileOnly
)和其他依赖项(例如
compile
),它就不能正常工作。您可以发布build.gradle文件(或示例?)吗?当然,我会用特定用例更新问题您现有的build.gradle文件已经满足了您的需求。您还可以向ch.qos添加一个显式的直接依赖项。logback:logback classic:1.2.0:最高版本获胜。到底是什么问题?为什么你认为你所拥有的不起作用?@JBNizet是的,我可以直接编译“logaback:1.2.0”,这会赢,但这不是我想要的。这个配置不起作用,伙计,因为在jersey和logback之间有更多相互依赖的jar。我不知道这为什么不起作用。我的项目是一个多项目目录结构。当使用Spring Boot时,它会用一些令人头痛的错误行为覆盖Gradle提供的正确行为。文件在这里,但要准备好撕下任何剩余的头发。特别是,如果您有一些依赖项(例如
compileOnly
)和其他依赖项(例如
compile
),那么它就不能正常工作。
+--- org.springframework.boot:spring-boot-starter-jersey -> 1.5.21.RELEASE
     +--- org.springframework.boot:spring-boot-starter:1.5.21.RELEASE
          +--- org.springframework.boot:spring-boot-starter-logging:1.5.21.RELEASE
              +--- ch.qos.logback:logback-classic:1.1.11 (*)