Как я могу запустить функции lombok в моем исполняемом файле jar? - PullRequest
0 голосов
/ 13 апреля 2020

Предположим, у меня есть конструктор из более чем 10 или более аргументов, и я использую его в запросе критериев выбора для извлечения данных. Теперь проблема в том, что я хочу удалить свой конструктор, поскольку он вызывает проблемы с сонаром.

Итак, я попытался установить зависимость Lombok, @AllArgsConstructor она работает в моей IDE, но когда я создаю файл jar, это не используется запросом JPA.

Мне нужна помощь, чтобы заставить lombok работать в моем файле project.jar ,

ИЛИ

изменить в выборе запрос, который не использует конструктор,

ИЛИ

Любой другой лучший способ

1 Ответ

1 голос
/ 13 апреля 2020

Lombok - дело компиляции. Как только ваш код скомпилирован (у вас есть файлы классов), lombok не должен быть там / не будет ничего делать. Ломбок не библиотека в этом смысле. Вы не отправляете 'javac' вместе с вашим приложением.

Если lombok является частью компиляции, то lombok сделает свое дело. Если это не так, то ваш компилятор выдаст ошибку; в конце концов, он не знал бы, о чем @AllArgsConstructor. Итак, если вы не наблюдаете каких-либо ошибок компиляции, lombok сделал свое дело *.

Во-вторых, сонар - это инструмент для подкладки. Он там, чтобы помочь вам. Если это «говорит вам» о написании кода, когда вы считаете, что это лучший способ сделать это, то попросите сонар прекратить жаловаться на это. Это инструмент для вас; не тюрьма.

Вы можете использовать javap, чтобы проверить, есть ли конструктор all-args. Если это так (то так и должно быть), тогда ваш вопрос на самом деле: как мне заставить мой инструмент JPA использовать этот конструктор?

*) Возможно, но потребуется определенная работа, чтобы сказать javac иметь классы lombok доступными, но НЕ запускать их как процессор аннотаций. Но если вы справитесь с этим, то Ломбок не изменил бы ни один из ваших классов. Я предполагаю, что это не так, поскольку вам нужно go убрать с дороги множество переключателей командной строки, чтобы это произошло.

...