【问题标题】:Gradle plugin: Convention vs. ExtensionGradle 插件:约定与扩展
【发布时间】:2013-07-11 08:59:29
【问题描述】:

我正在编写一个 Gradle 插件,我正在通过阅读用户指南和 Gradle 项目中插件的源代码来学习 Gradle。

在源码中,我找到了2种给项目添加属性的方法:

  • 约定(由 JavaBasePlugin 设置并由 JavaPlugin 使用)
  • Extension(由 AnnoncePlugin 设置并由 BuildAnnouncementsPlugin 使用)。

我不明白它们之间的区别以及在哪种情况下使用哪个。谁能解释一下?

PS:有人可以在 SO 中添加标签“gradle-plugin”吗?

【问题讨论】:

    标签: plugins gradle


    【解决方案1】:

    我在forum of Gradle找到了答案:

    扩展和约定是动态扩展构建模型的类似(但不相同)方式。扩展是较新的概念,并且在很大程度上取代了约定。总之,只使用扩展,不要使用约定。

    [...]

    扩展是任意(通常是用户定义的)类的实例,它以用户定义的名称附加到构建模型。扩展类可以定义任意方法。假设它附加到 Project 对象,扩展允许您添加 project.foo.someMethod,但不能添加 project.someMethod。由于每个扩展都有自己的命名空间(本例中为 foo),因此名称冲突的可能性大大降低(与约定相比)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-02-19
      • 1970-01-01
      • 1970-01-01
      • 2019-12-18
      • 2020-02-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多