Kann nicht scheinen, um Lombok zu arbeiten, in unit-tests
Wir haben die Zusammenstellung (wirklich einfachen) code, um zu testen und einzuführen Lombok-Annotationen in unser Projekt, um unseren code ein wenig schöner. Leider, scheint zu brechen, in der Prüfung, sowohl durch die Maven und beim ausführen der tests durch IntelliJ.
Unserer domain-Klassen Aussehen:
package foo.bar;
import lombok.Data;
@Data
public class Noddy {
private int id;
private String name;
}
Mit einem entsprechenden test:
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");
}
}
Wir haben die aspectjrt Abhängigkeit in Maven (wie auch die entsprechenden plugin in IntelliJ), und das aspectj-maven-plugin.
Starten wir mit Maven 2-Stil POMs, JSDK 1.6.0_31, Lombok 0.11.0:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.11.0</version>
</dependency>
Tun wir etwas dumm oder fehlt offensichtlich etwas?
Wäre es toll, wenn wir diese Arbeit, wie ich schon im Auge hatte mit Lombok in der Produktion für einige Zeit jetzt.
Vielen Dank,
P.
(FWIW, IntelliJ 11.1.2 hat die Lombok-plugin 0,4 und scheint mit ACJ für dieses Projekt)
- Haben Sie jemals eine Lösung gefunden für dieses problem?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem scheint zu sein, dass die lombok generierte code wird überschrieben von ajc, und laut einem blog-Eintrag, den ich gefunden von Fabrizio Giudici, es gibt keine "saubere" Maven-Lösung durch einen Fehler in der Maven-AspectJ-plugin, das verhindert, dass Sie übergeben die erforderlichen Argumente zu ajc.
Er schlägt einen workaround hier: http://weblogs.java.net/blog/fabriziogiudici/archive/2011/07/19/making-lombok-aspectj-and-maven-co-exist
Eigentlich diese für mich gearbeitet, und es ist wohl eine sauberere Lösung. Man könnte hinzufügen, die in der Durchführungsphase für die test-Klassen mit einer zusätzlichen weave-Verzeichnis.
Leider, getestet habe ich die zweite Lösung - erwähnt mhvelplund - aber es hat nicht für mich gearbeitet. Lösung war, vollständig zu entfernen die AspectJ maven-plugin von der pom.xml!