我有三个 gradle
项目。比如说 ProjectA
、ProjectB
和 ProjectC
。
ProjectC
依赖于 ProjectA
和 ProjectB
。而 ProjectB
依赖于 ProjectA
。
所以 ProjectC
的 build.gradle
有以下几行:
dependencies {
implementation project(':ProjectA')
implementation project(':ProjectB')
}
而 ProjectB
的 build.gradle
具有以下内容:
dependencies {
implementation project(':ProjectA')
}
我的问题是为什么我需要在 ProjectC
的构建文件中对 ProjectA
进行显式 implementation
声明?
由于我要添加 ProjectB
,因此不应该自动包含 ProjectA
,因为 ProjectB
依赖于 ProjectA
> ?
换句话说,为什么以下内容不适用于 ProjectC
?
dependencies {
implementation project(':ProjectB')
}
我是 gradle
的新手,因此试图了解项目工作之间的依赖关系管理方式。
编辑:
所以我想将 ProjectB
的 build.gradle 更改为以下内容:
dependencies {
api project(':ProjectA')
}
这样我就可以将 ProjectC
的 build.gradle 简化为:
dependencies {
implementation project(':ProjectB')
}
但是,我收到以下错误:
A problem occurred evaluating project ':ProjectB'.
> Could not find method api() for arguments [:ProjectA] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
我错过了什么吗?
最佳答案
因为 implementation
正是为此:它告诉 ProjectA 是 ProjectB 的代码(在内部)工作所必需的,但不是其 API 的一部分(即,您不希望ProjectB 依赖于它在内部使用 ProjectA 的事实。
如果您希望 ProjectA 成为 ProjectB API 的一部分,请使用 api
配置而不是实现
。
参见the guide了解更多详情。
关于java - Gradle 多项目传递依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55389699/