【问题标题】:Is it possible to inject extra annotations to classes before annotation processing?是否可以在注释处理之前向类注入额外的注释?
【发布时间】:2011-10-10 22:58:19
【问题描述】:

想象一下:

@MyAnnotation
public class A { ... };

@MyOtherAnnotation
public class B { ... };

如果一个类被@MyAnnotation注解,那么在注解处理之前应该额外添加一个@MyExtraAnnotation。所以,在这一步之后,我们应该有:

@MyExtraAnnotation
@MyAnnotation
public class A { ... };

@MyOtherAnnotation
public class B { ... };

这可能吗?如果是怎么办?谢谢。

【问题讨论】:

  • 这取决于您何时要处理注释。如果您在加载时或运行时处理它们,您肯定可以在编译时添加一些 - 如果一切都发生在编译时,它应该是可能的,但您可能必须注意操作的顺序 - 我但是,我不确定。
  • 我需要在编译时添加它们,在注解处理之前,这也发生在编译时。
  • maven 与问题的相关性是什么?
  • 如果你有没有 Maven 的解决方案,我也很感兴趣。

标签: java maven annotations preprocessor code-injection


【解决方案1】:

您应该查看lifecycleprocess-sources 阶段,或者可能是maven compiler pluginannotationProcessors 配置。

我还没有找到“添加注释”的插件,但肯定可以创建一个来做到这一点。

【讨论】:

  • 好吧,我看过注释处理器,但我真的不知道我该怎么做。我可以将类代码重新生成为新类并添加注释,但这很重。如果我只能修改现有代码并添加此注释,那就太好了。
  • 如果您对处理文本感到满意,那么处理源可能更容易。还有另一个与 [stackoverflow.com/questions/187550/….如果您可以调用外部进程(例如 perl)并进行替换,那将很容易(如果有点混乱)。 s/@MyAnnotation/@MyExtraAnnotation\n@MyAnnotation/g
猜你喜欢
  • 1970-01-01
  • 2016-02-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-26
  • 2011-01-01
  • 1970-01-01
  • 2012-09-17
相关资源
最近更新 更多