Maven 中的代碼生成 (Code generation in Maven)


問題描述

Maven 中的代碼生成 (Code generation in Maven)

I want to autogenerate some java classes from interfaces. My first thought was to write a code generator, and integrate it as a maven plugin.

I was thinking of creating a maven plugin with a codegen goal that is called during the build process.

So if I choose this route, how do I provide the plugin with the interfaces to be processed? And where should the generated files go?

Are there any existing plugins that can be configured to generate default class implementations?

‑‑‑‑‑

參考解法

方法 1:

Sources should go in {project.build.directory}/generated‑sources/[plugin‑id]/

Most plugins take configuration passed through the plugin configuration section in the pom. You can use default values as well, or an annotation and classpath scanning.

A plugin like the maven‑jspc‑plugin generates code, which you could take a look at. The "Better Builds With Maven" e‑book also contains a reasonably comprehensive chapter on writing plugins.

方法 2:

Maybe have a look at the XDoclet Maven plugin‑ XDoclet is often used for generating sources from doclet‑style markup in classes (e.g. autogenerating MBean interfaces from implementations) and that sounds similar to what you're doing.

方法 3:

I have used APT‑Jelly to successfully generate java source code from annotated java.  You may want to check it out.

(by parkrkrosenvoldaraqnidAWhitford)

參考文件

  1. Code generation in Maven (CC BY‑SA 3.0/4.0)

#Code-Generation #java #Plugins #maven-2






相關問題

關於編譯器中代碼生成的參考(中間表示、SSA、指令選擇、寄存器分配等)? (References on code generation in a compiler (intermediate representations, SSA, instruction selection, register allocation, etc.)?)

如何在每個新模塊中自動注入輔助類? (How to automatically inject helper classes in each new module?)

適用於Visual Studio的Python代碼生成器? (Python code generator for Visual Studio?)

為什么生成執行操作的 Java 代碼比“解釋器循環”運行得更慢? (Why does Java code generated to perform an operation run more slowly than an "interpreter loop"?)

ORM 映射的代碼生成工具 (code generation tool for ORM mapping)

Delphi 的 x86 代碼生成器框架 (x86 code generator framework for Delphi)

適用於 xpand 的 Actionscript 3 代碼美化器(MWE2 工作流程) (Actionscript 3 code beautifier for xpand (MWE2 Workflow))

Maven 中的代碼生成 (Code generation in Maven)

在自定義生成器中生成嵌套路由 (Generating nested routes in a custom generator)

是否有類似 JET(Java Emitter Templates)但沒有 Eclipse 依賴項的東西? (Is there something like JET (Java Emitter Templates) but without Eclipse-dependencies?)

Python函數,它返回自己的帶有參數的簽名 (Python function which returns its own signature with parameters)

為什麼 protobuf 更喜歡代碼生成器而不是運行時動態加載 (why protobuf prefer code-generator other than dynamic loading at runtime)







留言討論