如何让Lombok和AspectJ一起工作?

时间:2014-09-18 03:25:21

标签: java aspectj lombok

我刚刚发布了关于Lombok的this issue on SO帖子,但没有生成我的getter / setter。事实证明它与AspectJ相冲突。如果我禁用AspectJ,则适当地生成getter / setter。

我的猜测是ajc编译器无法识别lombok。

Lombok和AspectJ是否互相排斥?两种技术一起工作吗?

2 个答案:

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