Вы должны понять, как на самом деле работает Ломбок.
Здесь есть две части:
- аннотации, такие как @Data, @ToString, ...
- тот «плагин», который на самом деле генерирует соответствующий код
Вам нужна зависимость от lombok, чтобы компилятор / IDE мог разрешать аннотации самостоятельно. (аннотации необходимо импортировать, как и любой другой «элемент», который вы используете в своем исходном коде). Но это только гарантирует, что ваш компилятор / IDE знает , что это допустимые аннотации.
Реальная хитрость заключается в том, что позже, когда код скомпилирован в файлы классов, эта «активная» часть lombok доступна для фактического генерации кода.
Это похоже на валидацию Java-бина . Вам нужно импортировать один JAR во время компиляции, чтобы все различные аннотации валидации были известны и могли использоваться в вашем исходном коде. Но для того, чтобы объекты были активно проверены, вам позже понадобится какой-то другой компонент, который делает это (разница здесь в том, что проверка происходит во время выполнения, тогда как Lombok - это только время компиляции).
И, пожалуйста, обратите внимание: второй способ «использования / обработки аннотаций» является более распространенным. В вашем примере о JUnit и @RunWith: эта аннотация говорит JUnit в среде выполнения использовать этот класс бегуна mockito (вместо его собственной реализации бегуна). И этот бегун mockito знает, что делать во время выполнения со всеми остальными аннотациями. Та же самая история: аннотации, присутствующие в исходном коде, должны быть известны, для активной части, некоторый компонент делает вещи во время выполнения.
Конечно, вы также можете использовать аннотации, чтобы повлиять на задачу сборки, но, как уже было сказано, это менее распространено и намного сложнее.