Gradle 依赖范围

Gradle dependency scopes

我在 Gradle 上做了一些试验,但作为主要的 Maven 用户,一些依赖范围让我感到困惑……

有些与 Maven 相同:

compile -> compile
runtime -> runtime
compileOnly -> provided

但我也遇到了 implementation,这听起来像 Maven POM 的 parent 元素,但又不是。

有人可以解释一下什么是 implementation 和其他一些如果它们存在而我没有在这里提到(上面的测试版本很清楚不需要解释)吗?

而且如果implementation不像Maven上的parent,那么如何在Gradle中有Maven的parent POM效果呢?

如评论所述,请查看 the documentation or even at this recent webcast(免责声明:我将共同主持该网络广播)

至于 Maven 比较,查看从 Maven 迁移/学习到 Gradle 与从 subversion 迁移到 git 相同:虽然一些词汇是相同的,但理解后者的模型有帮助不仅仅是比较。

简而言之:

  • 不要在 Gradle 中使用 compileruntime,它们已被弃用。
  • implementation 涉及编译和 运行 您的应用程序所需的依赖项。
  • compileOnlyruntimeOnly 在上述
  • 的上下文中应该是不言自明的
  • java-library 插件添加了 api 配置,这是为您的库的使用者需要 compile.
  • 的依赖项保留的

没有直接等同于 Maven 父 pom。无论您是在谈论插件、构建配置还是依赖项,集中化的方式都是不同的。查看 multi-project authoring.

上的文档