gradle 具有传递依赖关系的BOM在Jetpack组合中的应用

dzhpxtsq  于 2023-02-04  发布在  其他
关注(0)|答案(1)|浏览(167)

我正在学习如何在项目中使用BOM

def composeBom = platform "androidx.compose:compose-bom:$compose_bom"
implementation composeBom
androidTestImplementation composeBom

我在Gradle文档中看到。platform的使用是在传递版本中使用的。那么platformBOM的连接是什么呢?任何指导都是很好的。

**注意:**我对传递性依赖没有太多的了解。

wztqucjr

wztqucjr1#

  • *platform**是一个特殊的软件组件,可用于控制可传递依赖版本。

来自Gradle文档:
组件可能具有两种不同类型的依赖关系:

*直接依赖项是组件直接需要的。直接依赖项也称为一级依赖项。例如,如果项目源代码需要Guava,则应将Guava声明为直接依赖项。
*传递依赖项是您的组件需要的依赖项,但仅因为另一个依赖项需要它们。

BOM文件具有:

  • POM封装类型
  • 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时,您无需向合成库依赖项本身添加任何版本。
使用

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'
}

相关问题