我们已经整理了一些(非常简单的)代码,以便测试并将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");
}
}
我们在Maven中有aspectjrt依赖(以及IntelliJ中的相关插件)和aspectj-maven-plugin。
我们正在使用Maven 2风格的POM,JSDK 1.6.0_31,Lombok 0.11.0:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>0.11.0</version>
</dependency>
我们做的事情是愚蠢的还是遗漏了一些明显的东西?
如果我们能够开展这项工作会很棒,因为我已经有一段时间在生产中使用Lombok了。
非常感谢,
P上。
(FWIW,IntelliJ 11.1.2有Lombok插件0.4,似乎在这个项目中使用ACJ)
答案 0 :(得分:1)
<击> 问题似乎是lombok生成的代码被ajc覆盖,并且根据Fabrizio Giudici发现的博客条目,由于Maven AspectJ插件中的一个错误阻止你通过,所以没有“干净”的Maven解决方案。 ajc的必要参数。
他提出了一个解决方法:http://weblogs.java.net/blog/fabriziogiudici/archive/2011/07/19/making-lombok-aspectj-and-maven-co-exist
击>
实际上,this对我有用,它可以说是一个更清洁的解决方案。您可能必须使用额外的编织目录为测试类添加执行阶段。
答案 1 :(得分:0)
不幸的是,我测试了第二个解决方案 - mentioned by mhvelplund - 但它对我没用。解决方法是从pom.xml中完全删除AspectJ maven插件!