Кажется, не может заставить Ломбок работать в модульных тестах
Мы собрали некоторый (очень простой) код, чтобы проверить и представить аннотации Lombok в наш проект, чтобы сделать наш код немного приятнее. К сожалению, кажется, что он нарушает тестирование, как через Maven, так и когда тесты проходят через IntelliJ.
Наши классы домена выглядят примерно так:
package foo.bar;
import lombok.Data;
@Data
public class Noddy {
private int id;
private String name;
}
С соответствующим тестом:
package foo.bar;
import org.junit.Test;
import static org.junit.Assert.assertEquals;
public class NoddyTest {
@Test
public void testLombokAnnotations(){
Noddy noddy = new Noddy();
noddy.setId(1);
noddy.setName("some name");
assertEquals(noddy.getName(), "some name");
}
}
У нас есть зависимость aspectjrt в Maven (а также соответствующий плагин в IntelliJ) и плагин aspectj-maven.
Мы работаем с POM файлами Maven 2, JSDK 1.6.0_31, Lombok 0.11.0:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.11.0</version>
</dependency>
Делаем ли мы что-то глупое или что-то очевидное?
Было бы здорово, если бы мы могли заставить это работать, так как я уже давно видел использование Lombok в производстве.
Большое спасибо,
Р.
(FWIW, IntelliJ 11.1.2 имеет плагин Lombok 0.4 и, кажется, использует ACJ для этого проекта)
Ответы
Ответ 1
Проблема заключается в том, что сгенерированный код lombok перезаписывается ajc, и согласно записи в блоге, которую я нашел Fabrizio Giudici, нет никакого "чистого" решения Maven из-за ошибки в плагине Maven AspectJ, которая мешает вам пройти необходимые аргументы для ajc.
Он предлагает обходное решение здесь: http://weblogs.java.net/blog/fabriziogiudici/archive/2011/07/19/making-lombok-aspectj-and-maven-co-exist
Забастовкa >
Собственно, этот работал у меня, и это, возможно, более чистое решение. Возможно, вам придется добавить этап выполнения для тестовых классов с дополнительным списком переплетений.
Ответ 2
К сожалению, я протестировал второе решение - упомянутое mhvelplund - но это не сработало для меня. Решение заключалось в том, чтобы полностью удалить плагин AspectJ maven из pom.xml!