是否可以使用 io.freefair.aspectj.post-compile-weaving 排除方面?

问题描述 投票:0回答:1

我有一个 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
插件排除某些方面?

我也在这里问过这个问题,但截至本文尚未收到任何回复。

gradle aspectj freefair-aspectj
1个回答
1
投票

这是一个一般性答案,不特定于 Freefair 甚至 Gradle:

AspectJ 编译器有一个未记录的选项

-xmlConfigured

,您可以通过它指定一个类似于用于配置加载时编织 (LTW) 的 
aop.xml
 文件的 XML 文件。有关如何使用它的最佳概述,您可以在我在 2014 年提出的 
AspectJ 文档 bug 中找到。只需通读它并按照我提供的一些链接进行操作即可。

如果 Freefair 后编译插件支持某种添加自定义编译器选项的方式,我认为这就是您想要的,因为在 XML 文件中您可以显式指定编译器应该使用哪些方面。所有其他的,它都会忽略。


更新:另请参阅我关于-xmlConfigured

的其他答案:

  • 如何在AJC命令行上使用
  • 如何从 Eclipse IDE 中使用
  • 如何在Maven中使用
这应该为您提供足够的信息以使其适应 Gradle。

© www.soinside.com 2019 - 2024. All rights reserved.