Разница между расширениями и дополнительными свойствами в Gradle - PullRequest
0 голосов
/ 24 мая 2019

Согласно Документам Gradle , объекты ExtensionAware могут быть расширены во время выполнения с другими объектами.

Таким образом, мы можем создать

// Add new extensions via the extension container
project.extensions.create('custom', String, "bar")

и затем получить к нему доступ как

project.custom == "bar"

Затем у нас есть Расширения дополнительных свойств , которые позволяют новымсвойства, которые будут добавлены к существующим объектам.

project.ext.custom = "bar"

или просто

project.custom = "bar"

Кажется, нет никакой разницы между ними с точки зрения удобства использования.

Я понимаю, что ext - это специальное расширение, и область поиска свойств отличается от других расширений, но в чем практическая разница между ними?Простые расширения и ext обеспечивают одинаковую функциональность?

1 Ответ

0 голосов
/ 25 мая 2019

Как правило, оба расширения и дополнительные свойства служат одной и той же цели, поскольку они оба помогают расширить область действия различных элементов в Gradle DSL, в основном объекта Project , Документация по Project представляет функциональные возможности со следующим объяснением:

  • Свойства extra проекта. Каждый проект поддерживает карту дополнительных свойств, которая может содержать любую произвольную пару имя -> значение. После определения свойства этой области видимости доступны для чтения и записи . Смотрите дополнительные свойства для более подробной информации.
  • Расширения , добавленные в проект с помощью плагинов . Каждое расширение доступно как только для чтения свойство с тем же именем, что и расширение.

Я выделил некоторые части выдержки из документации выше, чтобы показать два примерных различия между функциями:

  1. Хотя дополнительные свойства могут быть прочитаны и записаны после определения, расширение доступно только для чтения после определения. Если расширение является сложным объектом, его дочерние свойства могут быть записаны, но не само расширение.

  2. Расширения в основном предназначены для разработчиков плагинов, в то время как дополнительные свойства должны использоваться внутри самого скрипта сборки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...