java aspectj lombok

java - ¿Cómo hacer que Lombok y AspectJ trabajen juntos?



(2)

Acabo de terminar de publicar este problema en SO sobre Lombok que no genera mis captadores / establecedores. Resulta que está en conflicto con AspectJ. Si desactivo AspectJ, los captadores / establecedores se generan adecuadamente.

Mi conjetura es que el compilador ajc no puede reconocer lombok.

¿Lombok y AspectJ son mutuamente excluyentes? ¿Ambas tecnologías funcionan juntas?


Agregue Project Lombok como una dependencia al aspectoj-maven-plugin como en:

<dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <version>1.16.18</version> <scope>compile</scope> </dependency>

Por ejemplo:

<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>


La respuesta actual según Andy Clement, mantenedor de AspectJ, es que hay problemas debido a que los paquetes ECJ (Eclipse Compiler for Java) se incluyen y cambian de nombre en la infraestructura del compilador de AspectJ.

Para obtener más información, hay una discusión en curso entre Eric B. y A. Clement sobre la lista de correo de usuarios de AspectJ:

Tal vez podamos cerrar el problema aquí con esta respuesta e informar cuando el problema esté resuelto.