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

发布于 2024-11-28 09:16:02 字数 80 浏览 2 评论 0原文

有谁有一个 Maven 项目在编译时预处理类注释的干净示例,并在同一编译过程中编译后续生成的类?

有谁有实施此类项目的分步程序吗?

Does anyone have a clean example of a maven project preprocessing class annotations at compile time with subsequent generation of classes to be compiled in the same compilation process?

Does anyone have a step-by-step procedure to implement such a project?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

无言温柔 2024-12-05 09:16:02

在浏览了网上大量现有文档后,我得出以下结论:

需要澄清的内容:

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

使用 Maven 在 Java 6 中进行注释处理

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

...和代码生成

  • 一个名为 CodeModel 的出色 Java 代码生成库可从梅文中心。 此处提供了一个很好的教程。 javax 注释处理包也提供了一些生成输出的工具。

After navigating a lot in existing documentation on the net, I came up with the following:

What needs to be clarified:

  • In order to process annotations on a given project P, you first need an annotation processor compiled in a separate library S. P should have a dependency on S.
  • Implementing annotation processing in Java 5 is absolutely not the same thing as in Java 6.
  • Java 5 relies on a separate execution of apt. The corresponding tutorials here and here help understanding the basics of annotation processing and implementation in Java 5. Good reading for newbies.
  • Implementing annotation processing in Java 5 with Maven is tricky. One needs to add a local dependency to tools.jar to access the API described in these tutorials. Not clean. Some third-party plugins calling the apt are available, but not well documented.
  • Those using Java 6 should not jump-start implementing their processors according to the above tutorials.

Annotation Processing in Java 6 with Maven

  • A new package has been delivered in Java 6 to process annotations: the Pluggable Annotation Processing.
  • To implement a processor, create a separate Maven project. The above tutorial or this one explains how to proceed. This is our library S.
  • Then, create your project P and add a Maven dependency on S.
  • There is currently an issue with the maven-compiler-plugin, but a workaround is available here. Use it to compile your generated code as part of existing annotated code.

...and code generation

  • A great Java code generation library called CodeModel is available from Maven central. A good tutorial is available here. The javax annotation processing package offers some tools to generate output too.
╰◇生如夏花灿烂 2024-12-05 09:16:02

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>

maven-processor-plugin can do that...

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

Example from documentation:

<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>
只是在用心讲痛 2024-12-05 09:16:02

Maven-Antlr-Plugin 正是这样做的。它根据语法生成 Java 类,然后编译插件编译生成的类。 maven-annotation-plugin 可能有用

The Maven-Antlr-Plugin exactly does this. It generates Java classes from a grammar and the compile plugin compiles the generated classes. May it might be usefull the maven-annotation-plugin

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文