Gradle:如何执行整个子树的版本



有一个库x。它具有许多依赖关系和依赖性。x的每个版本都有不同的依赖树

x
|- x1
|  |- ...
|
|- ...

在我的项目中,我的其他一些依赖项包括具有某些特定版本的x。其他一些依赖项包括x1x2xk不同版本的依赖项

我想做的是明确设置x的版本,并在x声明的版本中执行所有依赖项,我选择了

如果没有x依赖关系的其他途径,则修复x的版本将具有该效果。

但是,由于gradle确实在 all 参与者之间的冲突解决,如果x的依赖性(例如y(也恰好是z的依赖性,这是您项目的另一个依赖性,那么y的版本将用于解决冲突。

检测这些问题的一种方法,因此对解决意外版本的冲突并不感到惊讶,就是使用failOnVersionConflict分辨率策略,因为如果两个路径带来y,但使用不同的版本,它将失败分辨率。

gradle 5.4及以前没有内置机制来执行您的要求。

您是否尝试过查看gradle依赖性约束?

 dependencies {
    implementation 'org.apache.httpcomponents:httpclient'
    constraints {
        implementation('org.apache.httpcomponents:httpclient:4.5.3') {
            because 'previous versions have a bug impacting this application'
        }
        implementation('commons-codec:commons-codec:1.11') {
            because 'version 1.9 pulled from httpclient has bugs affecting this application'
        }
    }
}

您可以将约束放在共同的部分中,然后简单地声明依赖项,而无需其他任何地方。

相关内容

  • 没有找到相关文章

最新更新