[gradle] api与implementation

2019-11-24  本文已影响0人  陀氏

简述

以往使用gradle引入依赖包时,我都用compile关键字:

    dependencies {
        compile "io.swagger:swagger-core:$swaggerVersion"
    }

这种做法会带来一些不必要的麻烦。举例说明:假如A使用compile依赖引入了B,在他人引入A依赖时,将被迫把B也导入到项目依赖中,可以直接使用其代码。
在gradle官网看文档,发现compile是已经被官方废弃,不再保证功能性的一个关键字。在gradle 3左右的版本中已支持implementationapi关键字,代替原先的compile功能:

展开

Gradle官方解释链接

implementation与api:

java-library与普通的plugin java的关键区别,在于java-library会提供api关键字,可以将一个依赖暴露给更上层的使用方。一个java-library就是一个被其它代码依赖的组件,在多project构建时很常用,也常见于外部依赖。
implementation用于定义组件完全在内部使用的依赖,api用于引入会通过api暴露给外部的依赖。

新关键字有哪些优势?

  • 依赖不会泄露给使用者,使用者在引入包时不会意外的新增一个子依赖;
  • 因为减少了classpath大小,有更快的编译速度;
  • 依赖项发生更改时,重新编译的东西更少了:无需重新编译它的使用者;
  • 更简洁的publish;
  • compile仍然可以使用,但是gradle官方已不再对它的功能做保证。
    ……
上一篇 下一篇

猜你喜欢

热点阅读