build.gradle.kts 和多模块项目:如何添加其他项目以便传递依赖项也可用

Rol*_*and 10 gradle gradle-kotlin-dsl

具有以下多模块设置:

\n\n
multi\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 projA\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 build.gradle.kts\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 projB\n\xe2\x94\x82   \xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 build.gradle.kts\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 build.gradle.kts\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 settings.gradle.kts\n
Run Code Online (Sandbox Code Playgroud)\n\n

内容如下(略):

\n\n\n\n

为什么我无法importantlibrary:1.0从访问该内容projB

\n\n

什么有效:如果我有一个projA使用该库的类,即使从其中的一个类调用该类,它也可以完美地工作projB(因此间接访问有效)。importantlibrary:1.0从内部直接访问任何类都projB不起作用(未解析的参考)。

\n\n

我在这里缺少什么?或者需要进行哪些设置才能使其正常工作?

\n\n

摇篮版本:5.6.1

\n

gsc*_*tti 8

我认为实现您想要的效果的一个好方法是使用api而不是implementation. implementation意味着仅将依赖关系保留在模块内,而api意味着将它们与模块一起导出。的依赖关系projA将变为:

dependencies {
    api("important-library:1.0")
}
Run Code Online (Sandbox Code Playgroud)

这是官方文档的链接:https://docs.gradle.org/current/userguide/java_library_plugin.html#sec :java_library_separation