2

我的目标是“读取”某个包的 Java 类,然后处理该包中的类和这些类中的方法上的 Javadoc 和注释(最好同时)。解决方案必须在 Java 6 或 7 中实现,构建工具是 Maven 3。我们目前正在使用maven-compiler-plugin, version 2.5.1,但如果可用/必要,我可能会进一步升级。

据我了解,这些javax.annotation.processing类的目的是做这种事情,我相信按照这个其他 SO 答案的 Java 代码应该适用于我的目的,但是如何让它实际运行的实际细节仍然是有点模糊。

说了这么多,这就是我认为我需要的:

  1. Java 代码挑选出我想要的注释和 Javadoc 项目,然后将这些项目转换为创建我的自定义文档所需的数据模型。
  2. Java 代码,然后将此数据模型写入 docs 文件或文件目录
  3. Maven 3 配置为:
    1. 适时运行一次注释处理器
    2. 在输出的war文件中包含生成的docs目录

Maven 位比 Java 代码更让我感到困惑,所以如果你只回答一半,那就是我的复选标记的一半。此外,我的偏好是不要将此注释处理器作为单独的插件放入 Maven 存储库,因为它将与我们正在使用的一些自定义注释紧密耦合。

以下是我发现的相关问题的简短列表,但我无法综合自己的答案:

4

1 回答 1

0

我不确定您是否可以从注释处理器访问 Javadoc。考虑使用 Doclet API:

http://docs.oracle.com/javase/7/docs/technotes/guides/javadoc/doclet/overview.html

编辑:

这是我写的一个注释处理器。也许它可以作为一个样本:

http://softsmithy.hg.sourceforge.net/hgweb/softsmithy/lib/main-golden/file/ae786193023d/softsmithy-lib-core/src/main/java/org/softsmithy/lib/util/impl/ServiceProviderAnnotationProcessor。爪哇

http://softsmithy.hg.sourceforge.net/hgweb/softsmithy/lib/main-golden/file/ae786193023d/softsmithy-lib-core/pom.xml

http://softsmithy.hg.sourceforge.net/hgweb/softsmithy/softsmithy-parent/main-golden/file/9397853ba514/pom.xml

对于 Maven:据我所知,您必须在包含注释处理器的项目中-proc:none作为编译器参数(编译器插件)传递。在该项目中还添加以下资源文件:并在第一行添加注释处理器的完全限定名称。META-INF/services/javax.annotation.processing.Processor

我通常将注解、注解处理器和这个“服务注册表文件”打包在同一个项目 A 中。然后在我使用注解并因此依赖于这个项目 A 的任何其他项目 B 中,选择注解处理器自动起来。

我正在使用 Maven 编译器插件 v2.3.2 和 Java SE 7。

于 2012-09-28T14:38:15.370 回答