【问题标题】:Forcing version of library B to match transitive dependency of library A强制库 B 的版本匹配库 A 的传递依赖
【发布时间】:2020-09-13 03:36:12
【问题描述】:

如果我在项目中包含 CXF 3.3.6

implementation(group: 'org.apache.cxf', name: 'cxf-rt-transports-http-jetty', version: "3.3.6")

使用依赖任务我们看到它也会引入jetty-server:9.4.27.v20200227

+--- org.apache.cxf:cxf-rt-transports-http-jetty:3.3.6
|    +--- org.apache.cxf:cxf-core:3.3.6 (*)
|    +--- org.apache.cxf:cxf-rt-transports-http:3.3.6 (*)
|    +--- org.eclipse.jetty:jetty-server:9.4.27.v20200227

现在我想将 jetty-servlet 添加到项目中:

implementation(group: 'org.eclipse.jetty', name: 'jetty-servlet', version: 'XYZ!?!')

有没有一种方便的方法可以强制jetty-servlet 依赖与CXF 引入的jetty-server 的传递依赖的版本相匹配?

【问题讨论】:

    标签: java gradle dependency-management


    【解决方案1】:

    如果依赖项将具有相同的版本,那么您可以使用自定义dependency resolution rule

    configurations.all {
        resolutionStrategy.eachDependency { DependencyResolveDetails details ->
            if (details.requested.group == 'org.eclipse.jetty') {
                details.useVersion "9.4.27.v20200227"
                details.because "Align all Eclipse Jetty dependencies to same version"
            }
        }
    }
    

    【讨论】:

      猜你喜欢
      • 2022-01-03
      • 1970-01-01
      • 2019-04-18
      • 2019-12-01
      • 2020-10-17
      • 2016-08-23
      相关资源
      最近更新 更多