Настройка Lombok

Цикл статей «Project Lombok».

Предыдущая статья — «Lombok @Log и его друзья».

Новое в Lombok 1.14: Вы можете создать файлы lombok.config в любом каталоге и заполнить его директивами настроек Lombok. Они применяются ко всем исходным файлам в этом каталоге и ко всем дочерним каталогам. Система конфигурации особенно полезна для настройки аспектов Lombok, которые должны быть одинаковыми во всё проекте, например имя переменной логгирования. Система настройки может быть также использована, для того чтобы Lombok пометил использование некоторых своих возможностей, которые вам не нравятся, как предупреждение или даже ошибка.

Обычно пользователи Lombok располагают файл lombok.config со своими настройками в корне своего workspace-а со специальной настройкой config.stopBubbling = true , чтобы указать Lombok-у, что это корневой каталог.  Затем вы можете создать свои файлы lombok.config в любых подкаталогах (обычно отображающих отдельные проекты и их исходные файлы) с отличающимися настройками.

Последняя версия всех поддерживаемых конфигурационных ключей, поддерживаемая вашей версией Lombok, может быть сгенерирована так:

Результатом работы утилиты config будет корректный файл lombok.config.

Утилита config может быть также использована для отображения конечной конфигурации, используемой для любого файла исходников, с помощью передачи этих аргументов.

 

Если установлено в true, то генерируемые методы установки значений можно выстраивать в цепочки (они возвращают this).

 

Если установлено в true, то сгенерированные методы установки значений и методы получения значений будут иметь то же имя, что и имя поля, без префиксов get и set.

 

Если установлено в true, то Lombok будет генерировать аннотацию @java.beans.ConstructorProperties  при генерации конструкторов. Это особенно полезно при разработке для GWT и Android.

 

Имя генерируемого поля log (по умолчанию — log).

 

Позволяет принудительно остановить мешающую возможность Lombok. Возможные значения для этого ключа: warning и error. Некоторые примеры значений для (featureName): "experimental"  (помечает использование любой экспериментальной возможности), "builder" , "sneakyThrows" , или "extensionMethod" .

Файлы конфигураций иерархические. Все настройки применяются ко всем исходным файлам в этом каталоге и ко всем исходным файлам в подкаталогах, но настройки, более близкие к исходному файлу, имеют приоритет. Например,  если вы имеете в /Users/me/projects/lombok.config  следующее:

И в /Users/me/projects/MyProject/lombok.config :

lombok.log.fieldName = xyzzy

То многие аннотации @Log будут использовать foobar вместо log в качестве имени поля логгирования, но в проекте /Users/me/projects/MyProject  будет использоваться xyzzy.

Для возврата конфигурационного ключа, установленного в родительском файле конфигурации, к значению по умолчанию, используйте опцию очистки. Например, если родительский конфигурационный файл настроен на появление предупреждения при использовании val, то вы можете отключить предупреждения для подкаталога, включив  в его lombok.config:

Некоторые ключи конфигурации принимают списки. Для списков используйте += для добавления элементов. Вы можете удалить один элемент из списка (полезно для отмены настройки в родительском файле конфигурации) с помощью -=. Пример:

Любая линия, начинающаяся с символа  «#» расценивается как комментарий.

Глобальные ключи конфигурации

Чтобы Lombok не смотрел в родительские каталоги для других конфигурационных файлов, используйте ключ:

Его рекомендуется располагать в вашем workspac-е.

Lombok обычно добавляет аннотации @javax.annotation.Generated  ко всем сгенерированным узлам, где это возможно. Вы можете отключаить добавление этих аннотаций:

Lombok может добавлять аннотацию @SuppressFBWarnings, которая полезна, если вы хотите запускать FindBugs для ваших class-файлов. Для включения этой возможности убедитесь, что findbugs в вашем classpath при компиляции, и добавьте в конфигурационный файл:

 

 

Цикл статей «Project Lombok».

Предыдущая статья — «Lombok @Log и его друзья».

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *