注释处理器的 jar 文件可以在 JBoss Maven 存储库 中找到,使用 示例 2.1,“Maven 依赖”.
或者,可以从 SourceForge 下载完整的发行版包。
在大多数情况下,只要将处理器 jar 添加到类路径并使用 JDK 6,注释处理器就会自动运行。这是由于 Java 的服务提供商 契约以及 Hibernate 静态元模型生成器 jar 文件在 META-INF/services
目录中包含文件 javax.annotation.processing.Processor
的事实。处理器的完全限定名称为:org.hibernate.jpamodelgen.JPAMetaModelEntityProcessor
。
使用 Java 6 编译器是先决条件。
如前所述,只要 jar 文件在类路径中,注释处理器就会在每次调用 Java 编译器时自动运行。但是,有时以更详细的方式控制注释处理很有用,例如,如果您只想运行处理器而不编译任何其他源文件。 示例 2.2,“Javac 任务配置” 显示了如何配置 Ant 的 Javac 任务 以仅运行注释处理。
选项 -proc:only 指示编译器仅运行注释处理。您也可以通过指定 -proc:none 完全禁用处理。
运行 'javac -help'
以查看可以指定哪些其他与注释处理器相关的选项。
maven-compiler-plugin 方法的缺点是,maven 编译器插件目前不允许指定多个编译器参数(MCOMPILER-62)以及来自 Messenger API 的消息被抑制(MCOMPILER-66)。更好的方法是为编译器插件禁用注释处理,如 示例 2.4,“Maven 编译器插件配置 - 间接执行” 所示。
禁用后,可以使用 maven-processor-plugin 进行注释处理。配置可以在 示例 2.5,“使用 maven-processor-plugin 进行配置” 中看到。
当然,您也希望在您喜欢的 IDE 中使用注释处理。以下各段和屏幕截图将向您展示如何在您的 IDE 中启用 Hibernate 静态元模型生成器。
Hibernate 静态元模型生成器接受一系列自定义选项,这些选项可以以 -A[property]=[value]
的格式传递给处理器。支持的属性为
表 2.1. 注释处理器选项(通过 -A[property]=[value] 传递)
选项名称 | 选项值和用法 |
debug | 如果设置为 true ,处理器将输出额外的跟踪信息 |
persistenceXml | 默认情况下,处理器在 /META-INF 中查找 persistence.xml。指定此选项可以指定来自不同位置的 persitence.xml 文件(必须在类路径中) |
ormXml | 允许指定额外的实体映射文件。为此选项指定的 value 是映射文件名以逗号分隔的字符串。即使指定了此选项,/META-INF/orm.xml 也是隐式的。 |
lazyXmlParsing | 可能的值为 true 或 false 。如果设置为 true ,注释处理器将尝试确定任何 xml 文件在调用之间是否已更改,如果未更改,则跳过 xml 解析。此功能是实验性的,在混合模式配置的某些情况下存在产生错误结果的风险。为了确定文件是否已修改,使用了一个临时文件 Hibernate-Static-Metamodel-Generator.tmp 。该文件将在 java.io.tmpdir 目录中创建。 |
fullyAnnotationConfigured | 如果设置为 true ,处理器将忽略 orm.xml 和 persistence.xml. 。 |
addGeneratedAnnotation | 如果设置为 true ,处理器将添加 @Generated 到生成的 Java 源文件中。使用 JDK 5 添加此注释会导致编译错误。在这种情况下,将标志设置为 false 。此选项的默认值为 true |
addGenerationDate | 如果设置为 true ,元模型类的生成日期将插入到 @Generated 注释的日期参数中。默认值为 false 。如果 addGeneratedAnnotation 设置为 false ,则会忽略此参数。 |
addSuppressWarningsAnnotation | 如果设置为 true ,处理器将添加 @SuppressWarnings("all") 到生成的 Java 源文件中。默认情况下,此注释不会生成。另请参阅 METAGEN-50。 |
版权所有 © 2010 Red Hat Inc.