我正在学习如何在项目中使用BOM
def composeBom = platform "androidx.compose:compose-bom:$compose_bom" implementation composeBom androidTestImplementation composeBom
我在Gradle文档中看到。platform的使用是在传递版本中使用的。那么platform与BOM的连接是什么呢?任何指导都是很好的。
platform
BOM
**注意:**我对传递性依赖没有太多的了解。
wztqucjr1#
来自Gradle文档:组件可能具有两种不同类型的依赖关系:
*直接依赖项是组件直接需要的。直接依赖项也称为一级依赖项。例如,如果项目源代码需要Guava,则应将Guava声明为直接依赖项。*传递依赖项是您的组件需要的依赖项,但仅因为另一个依赖项需要它们。
BOM文件具有:
dependencyManagement
“合成BOM”文件包含:
<dependencyManagement> <dependencies> <dependency> <groupId>androidx.compose.animation</groupId> <artifactId>animation</artifactId> <version>1.3.3</version> </dependency> <dependency> <groupId>androidx.compose.material</groupId> <artifactId>material</artifactId> <version>1.3.1</version> </dependency> <!-- others --> </dependencyManagement>
Gradle将BOM的<dependencyManagement>块中的所有条目视为类似于Gradle的**依赖关系约束。这意味着<dependencyManagement>块中定义的任何版本都可能影响依赖关系解析结果。这意味着BOM本身具有到不同合成库的 * 稳定版本的链接,从而使它们能够很好地协同工作。在应用中使用BOM时,您无需向合成库依赖项本身添加任何版本。使用
<dependencyManagement>
dependencies { // Import the Compose BOM implementation platform('androidx.compose:compose-bom:2022.12.00') // Import other Compose libraries without version numbers implementation 'androidx.compose.foundation:foundation' }
1条答案
按热度按时间wztqucjr1#
platform
**是一个特殊的软件组件,可用于控制可传递依赖版本。来自Gradle文档:
组件可能具有两种不同类型的依赖关系:
*直接依赖项是组件直接需要的。直接依赖项也称为一级依赖项。例如,如果项目源代码需要Guava,则应将Guava声明为直接依赖项。
*传递依赖项是您的组件需要的依赖项,但仅因为另一个依赖项需要它们。
BOM
文件具有:dependencyManagement
部分,列出项目与推荐版本的依赖关系。“合成BOM”文件包含:
Gradle将BOM的
<dependencyManagement>
块中的所有条目视为类似于Gradle的**依赖关系约束。这意味着<dependencyManagement>
块中定义的任何版本都可能影响依赖关系解析结果。这意味着BOM本身具有到不同合成库的 * 稳定版本的链接,从而使它们能够很好地协同工作。在应用中使用BOM时,您无需向合成库依赖项本身添加任何版本。
使用