问题标签 [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 - 如何对带注释的类型进行 AnnotationProcessor 测试 *subtypes*?
我希望创建一个注释来测试带注释的类型(可能是接口)及其所有子类型,如果任何测试的类型是没有无参数构造函数的具体类,则会引发编译错误。我能够测试实际带有注释的类型,没问题。测试亚型是我迷路的地方。我怎样才能做到这一点?源代码如下:
NoArgConstructorRequired.java
NoArgConststructorRequiredProcessor.java
java - 以编程方式调用注释处理器
这是我第一次编写注释处理器,我想以编程方式调用它。可能吗?
我为处理器编写了小代码:
现在如果我想调用 process 方法,那我该怎么做呢?我可以通过以下方式做到这一点:
任何信息都会对我很有帮助。
谢谢。
android - 如何使用注释处理器检查整个源代码树?
我有很多处理特定消息类型的处理程序类。要注册所有这些处理程序,我需要知道存在哪些处理程序。目前,它们都使用特定的注释进行注释,我使用 Java 6 注释处理器来获取所有这些注释,并创建一个 Register 类来保存每个注释类型的实例。
如果同时构建整个树,这非常有用,但如果只构建一个带注释的类(例如,当我在 Eclipse 中保存文件时),处理器只会看到该类型,并构建一个不完整的寄存器。在这种情况下如何检查其他类型?
android - 使用 AndroidMock 的 Ant android 测试项目
我有一个 android 项目,我想使用命令行构建和安装并运行测试。
以下是我的构建 shell 脚本:
该项目可以构建和安装,但在构建测试项目时遇到以下错误:
有没有人知道我该怎么办?我使用 AndroidMock 会发生这种情况吗?
android - 没有使用 maven 将注释处理(生成)的源编译成 apk
我尝试使用 Maven 和androidannotations来构建我的 apk,但独立于任何 IDE(我实际上使用的是 IntelliJ IDEA 而不是 Eclipse,但我希望它完全独立于 IDE,因此它也可以在任何构建服务器)。
注释似乎得到了正确处理,但它们没有被编译到 apk中,这是我目前卡住的地方。
我尝试使用 中的<includes>
部分maven-compiler-plugin
,并且路径应该是正确的 - 它存在并且还包含已处理、生成的注释 java 类,它是 Android 主要活动,但带有下划线 (_) 后缀。
有一个 wiki 页面描述了如何使用 Maven+Eclipse,但它与 Eclipse IDE 绑定太多。https://github.com/excilys/androidannotations/wiki/Building-Project-Maven-Eclipse 所以它不能帮助我解决问题。
这是我的 pom.xml:
mvn install
甚至向我展示了-s
具有正确路径的编译器选项:
(完整的日志在mvn install
这里: http: //pastebin.com/6dQkcNXD)
但仍然运行 apk 失败:
并且处理的注释HelloAndroidActivity_
不在apk/classes.dex中。
eclipse - Eclipse插件开发,在java项目中暴露插件的类
我正在尝试将注释处理器构建为 Eclipse 插件。这是我第一次为 eclipse 编写插件,所以我不确定我是否使用了正确的术语,如果我不是很清楚,我很抱歉。
我的目标是有一个从带注释的Java类生成代码的插件,我希望插件包含所有注释,所以除了安装插件之外,用户的项目不需要额外的依赖项,即安装插件的用户编写一些类,用一些注解(打包在插件内部)对它们进行注解并获取生成的代码。
有可能做我想做的事吗?我见过其他一些添加自己的库的插件(例如 Xtent)。
10倍
ant - 在 javac Ant 任务中禁用增量编译
我需要轻松测试我的注释处理器,因此我准备了 Ant 脚本以启动javac
所有必要的选项集。不幸的是,正如另一个线程中所述:
默认情况下,该任务比较 .java 和对应的 .class 文件的时间戳,并且只告诉 Java 编译器重新编译比其对应的目标文件更新的源文件,或者根本没有目标文件的源文件。
大多数时候这对我来说很好,但当我需要测试我的注释处理器时,我需要每次启动 javac,无论是否已经存在相应的 .class 文件。
有什么办法可以禁用这个蚂蚁默认行为?我查看了所有javac
任务选项,但一无所获。除了清理输出目录之外,还有其他解决方案吗?
java - 如何在注释处理器中获取字段的类型?
我正在尝试编写注释来检查对象在运行时是否不可变。为了做到这一点,我检查对象的类是否是最终的,然后它的所有属性是否也是最终的。然后,如果它不是原始类型,我想递归地检查每个字段的类型。
这里有一段代码:
如何让我的方法以我的字段类型重新开始?如何检索字段的类型,这里是 a javax.lang.model.element.Element
?
编辑:我需要包含类中声明的类型,它需要是最终类以避免任何类型的可变性。
java - 注释处理资源
我正在拼命寻找有关 Java 6 注释处理的宝贵资源。理想情况下,我想解决的不同点应该是:
- 各种 Element 接口以及如何从类结构中检索它们
- 如何将处理器链接到注释
- 如何使用处理器构建注释,例如以 jar 文件的形式
- 如何在 Eclipse 中完成这一切
你有任何可以匹配账单的资源吗?
java - 如何在 Maven 2 中使用自定义注释处理器?
在我们的企业应用程序中,我们正在寻找一种从 Java 类中收集数据的动态方式。我们创建了一个@interface
带有name
属性的自定义注释接口 ()。我们想从所有带注释的类中收集该属性的值。
我设法为自定义注释创建了一个AnnotationProcessorFactory
和一个AnnotationProcessor
。由于我们使用的是 Maven 2,因此我在pom.xml
主项目的插件中添加了以下内容。
这位于具有多个子项目的主项目中。工厂和定制处理器位于这些子项目之一中。自定义注释分散在所有子项目中,这就是我将插件放在pom.xml
主项目中的原因。
问题是当我发出mvn apt:process
命令时,我收到关于没有处理器的注释的警告,我们的自定义注释就在其中。我认为这意味着插件找不到工厂类。
我应该怎么做才能让插件找到工厂和处理器文件?
编辑:
项目层次结构非常简单:
该插件pom.xml
位于main_project
. 假设工厂和处理器在sub_project1
,自定义注解在sub_project2
, sub_project3
, ...,sub_projectn