-
关键字
api
:使用关键字api
声明的依赖项表示该模块将向依赖自己的模块公开自己依赖的 API。这意味着其他模块可以使用该依赖项提供的所有公共类和方法,以及该依赖项的传递依赖项提供的所有公共类和方法。当需要在本模块和依赖它的其他模块之间共享代码时,可以使用关键字api
。例如,如果模块 A 使用模块 B,并且模块 B 使用了关键字
api
声明某个依赖项,那么模块 A 也可以使用该依赖项的所有公共 API。这通常用于需要在模块之间共享代码的情况,例如库模块和应用程序模块之间的依赖关系。 -
关键字
implementation
:使用关键字implementation
声明的依赖项表示该模块将不向依赖自己的模块公开自己依赖的 API。这意味着该依赖项只对该模块本身可见,并且不会被传递到依赖该模块的其他模块。当不需要将某个依赖项的 API 公开给其他模块时,可以使用关键字implementation
。例如,如果模块 A 使用模块 B,而模块 B 使用了关键字
implementation
声明某个依赖项,那么模块 A 将无法使用该依赖项的任何公共 API。这通常用于需要在模块之间隔离依赖关系的情况,例如应用程序模块和库模块之间的依赖关系。
总之,使用关键字 api
声明依赖项时,可以将该依赖项的公共 API 与其他模块共享。而使用关键字 implementation
声明依赖项时,可以将该依赖项限制在当前模块内。
【注意】
对依赖模块使用关键字 api
,并不能使本模块能传递性地获得依赖模块依赖的所有依赖。对本模块来说,依赖时无论是使用关键字 api
还是 implementation
都没有区别。关键字 api
的作用只再其它模块依赖本模块时才会体现。换句话说,如果想令本模块能传递性地获得依赖模块的依赖,那么应该在依赖模块的相应依赖中使用关键字 api
,而不是在本模块中使用。
举个例子。如果项目中有模块 A、B、C、D,且 A 依赖 B、B 依赖 C、C 依赖 D。在不考虑各个模块其它依赖的干扰的情况下。
-
如果 B
implementation
C,Cimplementation
D则 B 可以直接引用 C 中的类,但不能引用 D 中的类
-
如果 B
implementation
C,Capi
D则 B 可以直接引用 C、D 中的类
-
如果 A
implementation
B,Bimplementation
C,Capi
D则 A 可以直接引用 B 中的类,但不能引用 C、D 中的类文章来源:https://www.toymoban.com/news/detail-434175.html
-
如果 A
api
B,Bimplementation
C,Capi
D则 A 可以直接引用 B 中的类,但不能引用 C、D 中的类
也就是说,如果 B implementation
C,则不管使用什么关键字,都无法通过 B 来依赖 C。文章来源地址https://www.toymoban.com/news/detail-434175.html
到了这里,关于Gradle 模块依赖中,使用 implementation 与 api 的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!