从 Eclipse 插件贡献一个 Java 注释

Contributing a Java annotation from an Eclipse plugin

我正在开发一个 Eclipse 插件,用于扫描和修改当前打开的 Java 项目的 AST。

我想创建一个 Java 注释,它将在使用该插件的项目中显示为已知注释。注释的 RetentionPolicy 将是 SOURCE(因此它被编译器丢弃),但插件将能够识别(使用 AST)标记有此注释的方法并相应地处理它们。

例如:

@SkipAnalysis
public void foo() {...}

此注释将在遍历 AST 时由插件分析,但它对编译器没有任何价值。

我的插件如何为工作区中打开的项目提供注释?

经过一些研究,事实证明这是不可能的,因为注释(和其他 类 或接口)只能通过构建路径提供。 Eclipse 插件可以更改构建路径,但不能将自己的源代码贡献给任何项目。

一种可能性是创建一个包含注释的库项目,然后使用插件修改构建路径的能力将该库添加到构建路径。然而,这很麻烦,并且会向项目添加不需要的依赖项,并且如果没有将库复制到从事该项目的所有其他开发人员,则可能会导致编译错误。一个例外是,如果项目使用构建自动化系统(如 Maven 或 Gradle),并且库存储在 public 存储库(如 Maven Central)中,确保每个导入的用户每个 IDE 上的项目将下载该库。再次 - 可能,但很麻烦。