我正在尝试为POJO类生成一个包装器,该包装器将包含一些其他功能。
因此,就我而言,我需要一种能够基于编译的类(对于Pojo.class为PojoWrapper.java)生成新的Java源代码文件的功能。
但是我必须完全使用类文件。这样做有两个原因:
我需要类的最终形状,但是注释处理器可以更改它。例如,龙目岛(Lombok)可以在类中添加方法,但是对我而言,提前了解这些方法很重要。
我必须能够为我不拥有的类(第三方库)生成源代码。
很显然,注释处理对我而言不起作用。
我想到的第一个想法是制作一个Maven插件,该插件将通过ASM库分析生成的二进制类。然后,我将生成源代码。
但是这里有一个棘手的部分:要获得最终的JAR,我需要两次编译我的项目,第一次是生成包装器源代码,然后需要将所有文件编译在一起以构建最终的二进制文件。 / p>
在这里,我正在考虑在编译阶段之前对maven-compile-plugin的单独调用,该调用将编译所需的类的子集,然后执行代码生成,然后在整个编译阶段进行整个操作项目将被编译。
我的问题是:如何正确执行以下步骤:
答案 0 :(得分:1)
您可以使用Java编译器插件API(即,拦截javac
编译阶段)。
请参见
https://docs.oracle.com/javase/8/docs/jdk/api/javac/tree/com/sun/source/util/Plugin.html