在同一编译过程中进行注释预处理和生成类的 Maven 示例?

2022-09-03 05:24:37

有没有人有一个maven项目在编译时预处理类注释的干净示例,以及要在同一编译过程中编译的后续类?

有没有人有一个分步程序来实施这样的项目?


答案 1

在网络上的现有文档中浏览了大量内容后,我想出了以下内容:

需要澄清的事项:

  • 为了处理给定项目 P 上的注释,首先需要一个在单独的库中编译的注释处理器 S.P 应该依赖于 S。
  • 在 Java 5 中实现注释处理绝对不是在 Java 6 中实现的。
  • Java 5 依赖于 apt 的单独执行。此处此处的相应教程有助于了解 Java 5 中注释处理和实现的基础知识。适合新手阅读。
  • 使用 Maven 在 Java 5 中实现注释处理很棘手。需要添加本地依赖项才能访问这些教程中描述的 API。㛺。一些调用apt的第三方插件可用,但没有很好的文档记录。tools.jar
  • 那些使用Java 6的人不应该根据上面的教程开始实现他们的处理器。

使用 Maven 的 Java 6 中的注释处理

  • 在 Java 6 中提供了一个新的来处理注释:可插拔注释处理
  • 若要实现处理器,请创建一个单独的 Maven 项目。上面的教程或本教程解释了如何继续。这是我们的库 S。
  • 然后,创建项目 P 并在 S 上添加 Maven 依赖项。
  • maven-compiler-plugin 目前存在问题,但此处提供了解决方法。使用它来编译生成的代码,将其编译为现有带注释代码的一部分。

...和代码生成

  • 一个名为CodeModel的优秀Java代码生成库可以从Maven central获得。这里有一个很好的教程。javax注解处理包也提供了一些工具来生成输出。

答案 2

maven-processor-plugin可以做到这一点...

https://code.google.com/p/maven-annotation-plugin/

文档中的示例:

<build> <plugins>
  <!-- Run annotation processors on src/main/java sources -->
  <plugin>
    <groupId>org.bsc.maven</groupId>
    <artifactId>maven-processor-plugin</artifactId>
    <executions>
      <execution>
        <id>process</id>
        <goals>
          <goal>process</goal>
        </goals>
        <phase>generate-sources</phase>
      </execution>
    </executions>
  </plugin>
  <!-- Disable annotation processors during normal compilation -->
  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <compilerArgument>-proc:none</compilerArgument>
    </configuration>
  </plugin>
</plugins> </build>

推荐