我刚刚发布了关于Lombok的this issue on SO帖子,但没有生成我的getter / setter。事实证明它与AspectJ相冲突。如果我禁用AspectJ,则适当地生成getter / setter。
我的猜测是ajc编译器无法识别lombok。
Lombok和AspectJ是否互相排斥?两种技术一起工作吗?
答案 0 :(得分:7)
根据AspectJ维护者Andy Clement的当前答案是,由于在AspectJ编译器基础结构中包含和重命名了ECJ(Eclipse Compiler for Java)包,因此存在问题。
有关更多信息,Eric B.和A. Clement之间正在就AspectJ用户邮件列表进行讨论:
也许我们可以通过这个答案解决问题,并在问题解决后报告。
答案 1 :(得分:0)
将项目Lombok添加为aspectj-maven-plugin的依赖项,如:
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>compile</scope>
</dependency>
例如:
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>aspectj-maven-plugin</artifactId>
<version>1.8</version>
<dependencies>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjtools</artifactId>
<version>${aspectj.version}</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.16.18</version>
<scope>compile</scope>
</dependency>
</dependencies>
<configuration>
<source>${java.version}</source>
<target>${java.version}</target>
<complianceLevel>${java.version}</complianceLevel>
<encoding>${project.build.sourceEncoding}</encoding>
<verbose>true</verbose>
<privateScope>true</privateScope>
<showWeaveInfo>true</showWeaveInfo>
<outxml>true</outxml>
</configuration>
<executions>
<execution>
<phase>compile</phase>
<goals>
<goal>compile</goal>
<goal>test-compile</goal>
</goals>
<configuration>
<aspectLibraries combine.self="override">
<aspectLibrary>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
</aspectLibrary>
</aspectLibraries>
</configuration>
</execution>
</executions>
</plugin>