问题标签 [annotation-processing]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
4545 浏览

java - 如何在编译期间逐步调试注释处理器?

我有一个注释处理器,用于保留策略 = SOURCE 的注释。

我不知道如何逐步调试它。

  • 我在运行 mvn install、compile or package 或 ant javac 时发出了打印语句、记录器信息,并且我在编译日志中看到了它们的 sysout。

  • 但是,我不知道如何在 Eclipse 中逐步调试处理器。我的意思是,你如何逐步调试编译时间?

0 投票
2 回答
1865 浏览

java - Types isAssignable and isSubtype misunderstanding

In writing an Annotation Processor using the Java 6 API, I came across a need to handle all Maps in a particular fashion, but I'm clearly misunderstanding what the API is intended to do or how to invoke it. Here's the code that's making me unhappy:

Given that, here's the output of it:

This makes perfect sense to me except for the first block where I'd expect a HashMap element to be assignable to Map, and I'd expect HashMap to be a subtype of Map.

What am I missing here?

0 投票
2 回答
7216 浏览

java - Maven中的注释处理器输出

我使用 JSR 269 作为在编译期间分析代码并在需要时使其失败的一种方式。我在 maven 中显示注释处理器的输出时遇到问题(Ant 确实显示了输出)我正在使用 javax.annotation.processing.Messager 来显示警告和错误,但在 maven 中我看不到它的输出。(我确实知道它会运行,因为它会生成应有的代码)。有任何想法吗?

0 投票
2 回答
3488 浏览

java - APT 如何处理嵌套注释类的注释

我正在尝试使用 java 编写注释处理器。该注释处理器需要识别注释类中的注释嵌套类,如下所示。我将首先处理带注释的类,然后处理它们的内部注释。这是在编译时执行的,我将不知道正在处理的类。Foo 中可以有多个嵌套类。如何处理所有这些嵌套类的注释。

如何在处理过程中访问嵌套的 Bar 类、注释“MyAnnotation”及其“MyMethodAnnotation”?下面的代码只打印出关于类 Foo 的信息。如何处理有关 Bar 的信息?

0 投票
1 回答
602 浏览

configuration - maven-processor-plugin listing the annotation processors to ignore

Is there a way to use the maven-processor-plugin (or any other plug-in) to execute annotation processors listing the ones to skip? I have little control on the processors my dependencies might use but I do know the one I want skipped.

The only option in the usage page is to list the ones you want to include but not the other way around.

Is there a way to do this in Maven?

0 投票
2 回答
1530 浏览

java - 注释处理器上具有 Diagnostic.Kind.NOTE(和其他)级别的消息

我有两个 Maven 项目:

  • 第一个定义了注解注解处理器提供者配置文件以通过 ServiceLoader API 触发注解处理器。
  • 另一个依赖于第一个并定义了一些类和接口,其中一个使用第一个项目中定义的注解进行了注解

我用 调用第二个项目的构建(在构建并安装了第一个项目之后)mvn clean && mvn compile,只是为了确保编译将发生并且注释处理将运行。它按预期工作:简单的注释处理器只是在target/classes/包含一些虚拟数据的目录中生成一个资源文件。

当我尝试使用输出一些信息时,processingEnv.getMessager().printMessage(...)我开始遇到一些麻烦。如果我使用Diagnostic.Kind.ERROR,则构建停止并打印消息,正如我所期望的那样。但是,与任何其他Kind(例如NOTEWARNING),消息不会写在屏幕上

关于我的环境的一些信息:

我没有明确声明maven-compiler-plugin任何地方的版本,所以它必须使用默认版本(2.3.2?我不确定)。

如何Kind在此设置中启用所有消息的输出?(即通过maven启动注解处理器)

0 投票
2 回答
461 浏览

maven - 依赖关系的 Maven、NetBeans 平台、包装器模块和注释处理器

我有一个 Maven NetBeans 平台应用程序。它的一个模块是一个 java 项目 (jar) 的包装器,它向 Lookup 公开一些服务。在包装的项目中,我使用 maven-processor-plugin 来处理注释,以便所有内容都在 Lookup 中注册。我无法在包装模块上看到暴露的类。我尝试运行 maven-processor-plugin 但它被跳过,因为包装模块中没有源文件。就算有也解决不了问题。

您可以在此处获取代码,在 Marauroa Server Manager 项目的模块:jWrestling Wrapper 中。

包装模块的代码可以在这里找到。模块中的注释类工作正常。

有没有办法在项目的依赖项上执行注释处理器?我错过了一些明显的东西吗?

0 投票
1 回答
341 浏览

java - 在 AnnotationProcessor 中访问 javac 选项

我正在编写自定义 AnnotationProcessor 并需要访问在执行期间设置为 javac 的选项:例如 -verbose、-s、-d

这样做的正确方法是什么。我不认为解析“sun.java.command”系统属性或访问 com.sun.tools.javac.util.Options 是这样做的好方法。

非常感谢。

PS:对于 -s 选项可能是这样的:

0 投票
0 回答
401 浏览

maven - 自定义注释处理器在 Maven 中创建重复的类

我有一个自定义注释处理器,它使用速度模板生成类。它工作正常,但我需要在构建之前清理项目以避免在编译期间重复类。

我什至将速度配置为删除已经存在的文件,但它没有帮助。有什么特别需要避免这种情况吗?

编辑

您可以在此处查看代码或在此处查看代码

NetBeans 包装器 pom 在这里

0 投票
2 回答
3015 浏览

java - AnnotationProcessor 使用多个源文件创建一个文件

我有两个带有方法的类,我想将这两个类的方法合并为一个类。

结果应该是:

我的 AnnotationProcessor 的第一次运行会生成正确的输出(因为 RoundEnvironment 包含这两个类)。

但是,如果我编辑其中一个类(例如添加新方法),RoundEnviroment 仅包含编辑后的类,因此结果如下(将 newMethod() 添加到接口 ITest1)

现在方法 2 不见了。我不知道如何解决我的问题。有没有办法(环境)访问项目中的所有类?还是有其他方法可以解决这个问题?

生成类的代码很长,所以这里简短描述一下我是如何生成类的。我遍历元素env.getElementsAnnotatedWith(Service.class)并提取方法并将它们写入新文件: