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.