Кажется, не может заставить Ломбок работать в модульных тестах

Мы собрали некоторый (очень простой) код, чтобы проверить и представить аннотации 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!