2013-07-11 5 views
7

私はGradleプラグインを作成しています。私はGradleプロジェクト内のプラグインのユーザーガイドとソースコードを読んでGradleを学習しています。ソースコードでGradle Plugin:Convention vs. Extension

は、Iプロジェクトにプロパティを追加の2つの方法が見つかりました:

  • 条約(JavaBasePluginによって設定さJavaPluginによって使用される)
  • によって設定された拡張( AnnoncePluginであり、BuildAnnouncementsPluginによって使用されます)。

どのような状況で使用するのか分かりません。誰かが説明できますか?

PS:誰かが「gradle-plugin」というタグを追加してもらえますか?

答えて

7

私はforum of Gradleに答えを見つけました:

拡張機能と規則は、動的に構築モデルを拡張する類似した(しかし同一ではない)方法です。拡張機能は新しい概念であり、大部分が規約を置き換えました。一言で言えば、拡張子を使用するだけで、慣習を使用しないでください。

[...]

拡張は、ユーザ定義の名前でビルドモデルに取り付けられています任意の(典型的には、ユーザ定義)クラスのインスタンスです。拡張クラスは任意のメソッドを定義できます。それがProjectオブジェクトにアタッチされていると仮定すると、拡張でproject.foo.someMethodを追加できますが、project.someMethodは追加できません。各拡張には独自の名前空間(この場合はfoo)があるため、名前の衝突の可能性は大幅に低下します(慣習と比較して)。

関連する問題