gradle - интерфейс gradle поддерживает расширение дополнительных свойств - PullRequest
0 голосов
/ 01 ноября 2019

В документации DSL для ExtraPropertiesExtension говорится, что

Расширения дополнительных свойств позволяют добавлять новые свойства к существующим объектам домена ... Все объекты домена ExtensionAware Gradle по своей природе имеютрасширение с именем «ext» этого типа.

Интерфейс Gradle не расширяет ни ExtensionAware, ни ExtraPropertiesExtension интерфейсы. Он расширяет только интерфейс PluginAware, который не расширяет другие интерфейсы.

Но независимо от этого объект Gradle (доступ к которому осуществляется через свойство project.gradle в сценарии сборки) поддерживает дополнительные свойства,

Итак, как следующий фрагмент кода, записанный в файле build.gradle, работает без ошибок?

project.gradle.ext["hows.this.possible"] = "This is indeed possible"
logger.info(">>> Project has this property: ${project.hasProperty('hows.this.possible')}")
logger.info(">>> Gradle supports Extra Properties: ${project.gradle.hasProperty('hows.this.possible')}")
logger.info(">>> Gradle Extra Property value: ${project.gradle['hows.this.possible']}")

Это наблюдаемый результат:

>>> Project has this property: false
>>> Gradle supports Extra Properties: true
>>> Gradle Extra Property value: This is indeed possible

PS: Я также проверил, сохраняются ли дополнительные свойства с объектом project, так как эти команды выполняются на этапе настройки [строка 2 фрагмента кода]. (что, я знаю, не имеет особого смысла, так как экземпляр gradle создается на этапе инициализации, а экземпляр project создается на этапе настройки).

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