我有一个 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
插件排除某些方面?
这是一个一般性答案,不特定于 Freefair 甚至 Gradle:
AspectJ 编译器有一个未记录的选项-xmlConfigured
,您可以通过它指定一个类似于用于配置加载时编织 (LTW) 的
aop.xml
文件的 XML 文件。有关如何使用它的最佳概述,您可以在我在 2014 年提出的AspectJ 文档 bug 中找到。只需通读它并按照我提供的一些链接进行操作即可。 如果 Freefair 后编译插件支持某种添加自定义编译器选项的方式,我认为这就是您想要的,因为在 XML 文件中您可以显式指定编译器应该使用哪些方面。所有其他的,它都会忽略。
更新:另请参阅我关于-xmlConfigured
的其他答案:这应该为您提供足够的信息以使其适应 Gradle。