Gradle 4.4 和 4.6 不使用依赖项目的依赖

Gradle 4.4 and 4.6 do not use dependencies from dependent projects

我有 2 个 gradle 项目 A 和 B

在项目A中我有

dependencies {
    ext {
        support_library_version = '26.1.0'
    }
    implementation "com.payu.india:payu-sdk:4.4.1"
    implementation "com.payu.magicretry:magicretry:1.0.4"
    implementation "com.payu.custombrowser:payu-custom-browser:6.1.1"
    implementation "com.android.support:appcompat-v7:${support_library_version}"
    implementation "com.android.support:support-v4:${support_library_version}"
}

在项目B中我有

implementation project(':A')

出于某种原因,项目 B 报告无法找到所有 com.payu.* 导入的符号。

在我将 gradle 升级到 4.4 之后,我不得不将所有需要的 implementation 从项目 A 复制到项目 B。我错过了什么?

2 个回答发布在 gradle 个问题上 here

1

这正是它应该做的。这就是使用 java-library 插件时 api 和实现依赖项之间的区别:

implementation 依赖项是 "internal",所以不要泄露给下游消费者 api 另一方面,依赖项是传递性暴露的,因为它们参与了 API表面 因此,要么您需要添加对 A 的显式 implementation 依赖项,以说明您也需要这些依赖项,要么他们应该使用 api。我们无法自动为您确定。

2

顾名思义,implementation 依赖项是实现细节,不可用于下游项目编译。如果依赖项应该是你的 api 的一部分,你应该使用 api 配置