无法在 Gradle 中重新排序 AspectJ 任务

Can't reorder AspectJ task in Gradle

我正在使用 Gradle 4.5.1、gradle-aspectj 2.0 插件和其他插件。问题是 aspectj 的任务 compileAspectcompileJava 之前执行。我好像找到了 a problem here。所以我尝试通过以下方式重新排序任务执行:

project.tasks['compileJava'].dependsOn.remove(project.tasks['compileAspect'])
project.tasks['compileAspect'].dependsOn(project.tasks['compileJava'])

我也尝试过几乎相同的方法,将 project.tasks[taskName] 替换为 taskName。但是,在重新排序后 compileAspect 任务被忽略(完全没有跳过)。更重要的是:虽然 compileJava 似乎被执行了,但它不会在 build/classes 目录中产生任何 类。

我是 Gradle 的新手,所以也许我在重新排序的某个地方犯了错误?请参阅 the Github repository 作为产生问题的示例。

非常感谢您的帮助!

What's more: although compileJava seems to be executed it doesn't produce any classes in the build/classes directory.

这似乎是 Gradle AspectJ 插件 的意图。您链接的行 (62) 之前的行包含:

project.tasks[javaTaskName].deleteAllActions()

这会导致 compileJava 任务什么都不做,这就是为什么对于插件来说,任务的顺序并不重要。该插件旨在用 compileAspect 任务完全替换 compileJava 任务。

请注意,Gradle AspectJ 插件archived four months ago:

We do not use this code any longer and this repository has been archived.

如果您计划在一个构建中使用两个编译步骤(Java 和 AspectJ),您可以创建自己的插件。也许您可以分叉现有项目并重用任务 class.