如何让龙目岛和AspectJ一起工作?

2022-09-01 14:48:42

我刚刚在SO上发布了关于龙目岛没有生成我的getters/setters的问题。事实证明,它与AspectJ冲突。如果我禁用AspectJ,那么就会适当地生成 getters/setters。

我的猜测是ajc编译器无法识别龙目岛。

龙目岛和AspectJ是相互排斥的吗?这两种技术可以协同工作吗?


答案 1

根据AspectJ维护者Andy Clement的说法,目前的答案是,由于ECCJ(Eclipse Compiler for Java)软件包被包含在AspectJ编译器基础架构中并重命名,因此存在问题。

欲了解更多信息,Eric B.和A. Clement在AspectJ用户邮件列表上正在进行讨论:

也许我们可以用这个答案在这里结束问题,并在问题解决时报告。


答案 2

在 2022 年 - 在 Lambda Powertools FAQ 的 AWS 文档中有一个答案:https://awslabs.github.io/aws-lambda-powertools-java/FAQs/

要启用就地编织功能,您需要使用以下 aspectj-maven-plugin 配置:

<configuration>
    <forceAjcCompile>true</forceAjcCompile> 
    <sources/>
    <weaveDirectories>
        <weaveDirectory>${project.build.directory}/classes</weaveDirectory>
    </weaveDirectories>
    ...
    <aspectLibraries>
        <aspectLibrary>
            <groupId>software.amazon.lambda</groupId>
            <artifactId>powertools-logging</artifactId>
        </aspectLibrary>
    </aspectLibraries>
</configuration>

推荐