Gradle-实现和运行时之间的区别

时间:2018-07-01 22:26:43

标签: gradle

已阅读此Gradle documentation,我了解apiimplementation之间的区别。但是,我想知道implementation与已弃用的runtime之间是否有区别。

根据this table,在行为上没有差异,但是在实践中使用runtime似乎在尝试时泄漏了编译类路径,因此我尝试隐藏的类是实际上暴露给使用模块。

1 个答案:

答案 0 :(得分:2)

implementation依赖项被添加到声明它们的项目的编译类路径中。runtime依赖项不是这种情况。

如果您纯粹是在谈论implementationruntime依赖关系如何影响项目使用者,则4.6 release notes指出runtime依赖关系始终包含在编译中classpath,这就是为什么您看到泄漏的原因。

如果您发布的库具有implementation依赖关系,则这些依赖关系在POM中将被标记为runtime范围,我怀疑它们也将包含在使用项目的编译类路径中。您需要启用IMPROVED_POM_SUPPORT功能才能更改它。