web-dev-qa-db-fra.com

Comment faire travailler ensemble Lombok et AspectJ?

Je viens de terminer de poster ce problème sur SO à propos de Lombok qui ne génère pas mes getters/setters. Il s'avère que cela entre en conflit avec AspectJ. Si je désactive AspectJ, les getters/setters sont générés de manière appropriée.

Mon hypothèse est que le compilateur ajc n'est pas capable de reconnaître Lombok.

Lombok et AspectJ sont-ils mutuellement exclusifs? Les deux technologies fonctionnent-elles ensemble?

20
Eric B.

Selon le responsable de AspectJ, Andy Clement, la réponse actuelle est qu’il existe des problèmes liés à l’inclusion et à la modification des packages ECJ (compilateur Eclipse pour Java) dans l’infrastructure du compilateur AspectJ.

Pour plus d'informations, des discussions sont en cours entre Eric B. et A. Clement sur la liste de diffusion des utilisateurs d'AspectJ:

Peut-être pourrions-nous régler le problème ici avec cette réponse et faire rapport lorsque le problème sera résolu.

7
kriegaex

Ajoutez le projet Lombok en tant que dépendance au plugin aspectj-maven sous:

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

Par exemple:

<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>
0
Cheng.T