• Gradle 中 api、implementation、compileOnly、provide 区别与联系


    Gradle7

    Gradle 7 中,compile和runtime配置都被删除了。因此,您必须迁移到上面的implementation和api配置。如果您仍在java为 Java 库使用该插件,则需要改为应用该java-library插件。

    都属于java库插件

    java库插件依赖配置

    在这里插入图片描述

    • 绿色的配置是用户应该用来声明依赖关系的配置

    • 粉红色的配置是组件编译或针对库运行时使用的配置

    • 蓝色的配置是组件内部的,供自己使用

    测试配置

    在这里插入图片描述

    java库插件配置表

    配置名称使用及描述
    api该依赖方式会传递所依赖的库,当其他module依赖了该module时,可以使用该module下使用api依赖的库。(传递依赖)用于编译时和运行时。(取代以前的compile
    implementation只能用于当前模块下,模块内部使用 取代以前的 compile,使用该方式依赖的库将会参与编译和打包
    compileOnly代替以前的provided ,只在编译时有效,不会参与打包可以在自己的moudle中使用该方式依赖一些比如com.android.support,gson这些使用者常用的库,避免冲突。
    compileOnlyApi这是您声明模块和使用者在编译时需要但在运行时不需要的依赖项的地方。这通常包括在运行时发现时被遮蔽的依赖项。
    runtimeOnly只在生成apk的时候参与打包,编译时不会参与,很少用。代替以前的 apk
    testImplementation只在单元测试代码的编译以及最终打包测试apk时有效。代替以前版本的testCompile
    testCompileOnly这是您声明依赖项的地方,这些依赖项仅在测试编译时需要,但不应泄漏到运行时。这通常包括在运行时发现时被遮蔽的依赖项。
    testRuntimeOnly这是您声明依赖项的地方,这些依赖项仅在测试运行时需要,而不是在测试编译时需要。

    常见配置升级

    删除的配置新配置
    compileapi或者implementation
    runtimeruntimeOnly
    testRuntimetestRuntimeOnly
    testCompiletestImplementation
    RuntimeRuntimeOnly
    CompileImplementation
  • 相关阅读:
    【mindspore1.5.0】安装mindspore报libcuda.so没找到和libcudnn没找到
    20-Redis哨兵和高可用、一致性Hash和ES的简单介绍
    Go语学习笔记 - gorm使用 - 表增删改查 Web框架Gin(八)
    Unity性能优化一本通
    月薪10.8K,从销售客服转行软件测试斩获4份offer,所有的惊艳都来自长久的准备
    Python中处理HTTP异常和错误的策略
    升腾C92 刷 OpenWrt 作旁路由设置 DNS 服务、扩容分区、设置 swap
    SpringCloud-RabbitMQ消息模型
    【无标题】
    @Aspect注解使用说明
  • 原文地址:https://blog.csdn.net/superzhang6666/article/details/126490785