Для большинства случаев использования должно быть достаточно просто проверить значение свойства после того, как вы разрешите его в своей задаче или в других внутренних частях вашего плагина. На самом деле только несколько расширений предназначены для использования другими плагинами или сценарием сборки.
Gradle не предоставляет некоторую проверку, которую можно прикрепить к свойству, однако вы можете создать эту функциональность самостоятельно, как в пример ниже:
class MessageExtension {
private final Property<String> _greeting
final Provider<String> greeting
@javax.inject.Inject
MessageExtension(ObjectFactory objects) {
_greeting = objects.property(String)
greeting = _greeting.map { value ->
if (value.equals('test'))
throw new RuntimeException('Invalid greeting')
return value
}
}
def setGreeting(String value) {
_greeting.set(value)
}
def setGreeting(Provider<String> value) {
_greeting.set(value)
}
}
project.extensions.create('message', MessageExtension)
message {
greeting = 'test'
}
println message.greeting.get()
Я превратил Property
в поле поддержки для Provider
, которое запускает проверку при разрешении. Если вы не хотите генерировать исключение, а просто возвращаете пустой Provider
, вы можете заменить map
на flatMap
.