Ломбок на Дженкинс
Я только начал использовать способность Lombok автоматически генерировать геттеры и сеттеры для Java-бинов в моей локальной среде Eclipse, изменив путь к загрузочному классу:
-vmargs -javaagent:lombok.jar -Xbootclasspath/a:lombok.jar
Локально работает, однако, поскольку жизненный цикл нашего приложения влечет за собой сборки Jenkins, я немного подозрительно отношусь к тому, как эти аннотации @Getter и @Setter влияют на код, когда он будет работать в нашей среде CI.
Пока что Lombok касается нашего уровня домена, и поскольку мы используем другие фреймворки, которые зависят от наличия методов получения / установки в модели во время выполнения, чтобы они работали, я бы хотел немного лучше понять, как выполняется модификация байт-кода Lombok, прежде чем я полностью совершить его использование.
Будут ли все методы, автоматически генерируемые этими аннотациями, доступны в Jenkins только благодаря наличию зависимости Lombok в файле pom.xml, или мне дополнительно потребуется изменить весь сценарий запуска Jenkins, как описано выше. Или, может быть, просто нужно изменить работу Дженкинса, чтобы включить поведение модификации байт-кода Lombok?
Если кто-то попробует и преуспеет в объединении Lombok с Jenkins CI, я буду готов услышать их опыт и ассимилировать их в нашем процессе DevOps.
Заранее спасибо.
2 ответа
Наличие зависимости Lombok в вашем pom-файле ("при условии") должно сделать эту работу. Вы можете проверить это в командной строке на вашем локальном компьютере, используя mvn package
, Вам не нужно -vmargs
или что-нибудь еще.
Lombok подключается на этапе компиляции и просто генерирует правильные поля, методы и код в файле классов. Все, что работает с файлами классов, даже не должно знать, что оно было сгенерировано Lombok.
Если по какой-либо причине вам необходимо обработать исходные файлы, содержащие сгенерированный код, вы также можете сначала запустить delombok с помощью плагина Lombok Maven.
В моей компании мы успешно используем Jenkins и Lombok.
Раскрытие информации: я разработчик Lombok.
Благодарю. Проблема решена сейчас. Основной причиной было то, что я добавил зависимость не в том месте.