问题标签 [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.
java - 如何在编译期间逐步调试注释处理器?
我有一个注释处理器,用于保留策略 = SOURCE 的注释。
我不知道如何逐步调试它。
我在运行 mvn install、compile or package 或 ant javac 时发出了打印语句、记录器信息,并且我在编译日志中看到了它们的 sysout。
但是,我不知道如何在 Eclipse 中逐步调试处理器。我的意思是,你如何逐步调试编译时间?
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?
java - Maven中的注释处理器输出
我使用 JSR 269 作为在编译期间分析代码并在需要时使其失败的一种方式。我在 maven 中显示注释处理器的输出时遇到问题(Ant 确实显示了输出)我正在使用 javax.annotation.processing.Messager 来显示警告和错误,但在 maven 中我看不到它的输出。(我确实知道它会运行,因为它会生成应有的代码)。有任何想法吗?
java - APT 如何处理嵌套注释类的注释
我正在尝试使用 java 编写注释处理器。该注释处理器需要识别注释类中的注释嵌套类,如下所示。我将首先处理带注释的类,然后处理它们的内部注释。这是在编译时执行的,我将不知道正在处理的类。Foo 中可以有多个嵌套类。如何处理所有这些嵌套类的注释。
如何在处理过程中访问嵌套的 Bar 类、注释“MyAnnotation”及其“MyMethodAnnotation”?下面的代码只打印出关于类 Foo 的信息。如何处理有关 Bar 的信息?
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?
java - 注释处理器上具有 Diagnostic.Kind.NOTE(和其他)级别的消息
我有两个 Maven 项目:
- 第一个定义了注解、注解处理器和提供者配置文件以通过 ServiceLoader API 触发注解处理器。
- 另一个依赖于第一个并定义了一些类和接口,其中一个使用第一个项目中定义的注解进行了注解。
我用 调用第二个项目的构建(在构建并安装了第一个项目之后)mvn clean && mvn compile
,只是为了确保编译将发生并且注释处理将运行。它按预期工作:简单的注释处理器只是在target/classes/
包含一些虚拟数据的目录中生成一个资源文件。
当我尝试使用输出一些信息时,processingEnv.getMessager().printMessage(...)
我开始遇到一些麻烦。如果我使用Diagnostic.Kind.ERROR
,则构建停止并打印消息,正如我所期望的那样。但是,与任何其他Kind
(例如NOTE
或WARNING
),消息不会写在屏幕上!
关于我的环境的一些信息:
我没有明确声明maven-compiler-plugin
任何地方的版本,所以它必须使用默认版本(2.3.2?我不确定)。
如何Kind
在此设置中启用所有消息的输出?(即通过maven启动注解处理器)
maven - 依赖关系的 Maven、NetBeans 平台、包装器模块和注释处理器
我有一个 Maven NetBeans 平台应用程序。它的一个模块是一个 java 项目 (jar) 的包装器,它向 Lookup 公开一些服务。在包装的项目中,我使用 maven-processor-plugin 来处理注释,以便所有内容都在 Lookup 中注册。我无法在包装模块上看到暴露的类。我尝试运行 maven-processor-plugin 但它被跳过,因为包装模块中没有源文件。就算有也解决不了问题。
您可以在此处获取代码,在 Marauroa Server Manager 项目的模块:jWrestling Wrapper 中。
包装模块的代码可以在这里找到。模块中的注释类工作正常。
有没有办法在项目的依赖项上执行注释处理器?我错过了一些明显的东西吗?
java - 在 AnnotationProcessor 中访问 javac 选项
我正在编写自定义 AnnotationProcessor 并需要访问在执行期间设置为 javac 的选项:例如 -verbose、-s、-d
这样做的正确方法是什么。我不认为解析“sun.java.command”系统属性或访问 com.sun.tools.javac.util.Options 是这样做的好方法。
非常感谢。
PS:对于 -s 选项可能是这样的:
java - AnnotationProcessor 使用多个源文件创建一个文件
我有两个带有方法的类,我想将这两个类的方法合并为一个类。
结果应该是:
我的 AnnotationProcessor 的第一次运行会生成正确的输出(因为 RoundEnvironment 包含这两个类)。
但是,如果我编辑其中一个类(例如添加新方法),RoundEnviroment 仅包含编辑后的类,因此结果如下(将 newMethod() 添加到接口 ITest1)
现在方法 2 不见了。我不知道如何解决我的问题。有没有办法(环境)访问项目中的所有类?还是有其他方法可以解决这个问题?
生成类的代码很长,所以这里简短描述一下我是如何生成类的。我遍历元素env.getElementsAnnotatedWith(Service.class)
并提取方法并将它们写入新文件: