自定义注释处理,生成文档和Maven 3

时间:2012-09-28 14:26:13

标签: java maven annotations maven-3 maven-compiler-plugin

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

据我了解,javax.annotation.processing类的目的是做这种事情,我相信this other SO answer的Java代码应该适用于我的目的,但实际的细节如何使它实际运行仍然有点模糊。

所有这一切,这就是我认为我需要的东西:

  1. Java代码,用于挑选我想要的注释和Javadoc项目,然后将这些项目转换为创建自定义文档所需的数据模型。
  2. Java代码然后将此数据模型写入文档文件或文件目录
  3. Maven 3配置为:
    1. 及时运行一次注释处理器
    2. 在生成的war文件中包含生成的docs目录
  4. Maven的位置比Java代码更让我失望,所以如果你只回答一半,那将是我的复选标记的一半。此外,我的偏好是不将此注释处理器作为单独的插件放入Maven存储库,因为它将与我们正在使用的一些自定义注释紧密结合。

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

1 个答案:

答案 0 :(得分: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.java

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中。然后在我正在使用注释的任何其他项目B中,因此依赖于此项目A,注释处理器自动被选中。

我正在使用Maven Compiler Plugin v2.3.2和Java SE 7。