gradle 可以用io.freefair.aspectj.post-compile-weaving排除方面吗?

5ssjco0h  于 2023-01-13  发布在  其他
关注(0)|答案(1)|浏览(143)

我有一个Gradle 7.3.3方面库和一个使用该库的Gradle 7.3.3项目,我正在该项目中应用io.freefair.aspectj.post-compile-weaving Gradle插件。

plugins {
    id 'io.freefair.aspectj.post-compile-weaving' version '6.3.0'
}

然后,我将库作为方面依赖项添加到项目中。

dependencies {
    aspect 'com.example:my-aspect-lib:0.0.1'
}

除了我希望在编译后编织的库方面之外,项目本身也有我希望Spring AOP在运行时处理的方面,这些方面不能在编译后编织,但是post-compile-weaving的默认行为是在项目中编织所有方面。
我已经尝试了很多不同的ajc配置迭代,包括修改compilerArgs,但是到目前为止,我还不能从编译后编织中排除项目方面。

compileJava {
    ajc {
        options {
            aspectpath.minus files()
            aspectpath.setFrom configurations.aspect
        }
    }
}

是否可以使用post-compile-weaving插件排除方面?

  • 我也问过这个问题here,但截至本文尚未收到任何回复。*
kknvjkwl

kknvjkwl1#

  • 这是一个一般性的答案,并非特定于Freefair甚至Gradle:*

AspectJ编译器有一个未公开的选项-xmlConfigured,通过该选项可以指定一个类似于用于配置加载时编织(LTW)的aop.xml文件的XML文件。关于如何使用该选项的最佳概述可以在我在2014年提出的AspectJ documentation bug中找到。只需通读该选项并按照我提供的一些链接进行操作。
如果Freefair编译后插件支持某种方式来添加自定义编译器选项,我想这就是你想要的,因为在XML文件中你可以显式地指定编译器应该使用哪些方面。
如果你在应用这个解决方案时有任何具体的问题,请随时告诉我--但只有在你有MCVE的情况下,最好是在GitHub上,才能告诉我。

**更新:**另见我关于-xmlConfigured的其他回答:

这将为您提供足够的信息,使其适应Gradle。

相关问题