已阅读此Gradle documentation,我了解api
和implementation
之间的区别。但是,我想知道implementation
与已弃用的runtime
之间是否有区别。
根据this table,在行为上没有差异,但是在实践中使用runtime
似乎在尝试时泄漏了编译类路径,因此我尝试隐藏的类是实际上暴露给使用模块。
答案 0 :(得分:2)
implementation
依赖项被添加到声明它们的项目的编译类路径中。runtime
依赖项不是这种情况。
如果您纯粹是在谈论implementation
和runtime
依赖关系如何影响项目使用者,则4.6 release notes指出runtime
依赖关系始终包含在编译中classpath,这就是为什么您看到泄漏的原因。
如果您发布的库具有implementation
依赖关系,则这些依赖关系在POM中将被标记为runtime
范围,我怀疑它们也将包含在使用项目的编译类路径中。您需要启用IMPROVED_POM_SUPPORT
功能才能更改它。