如何在Maven中使用模板代码生成器(例如freemarker)?

2022-09-04 19:45:08

您将如何将Freemarker(或替代方案)构建为模板代码生成器到Maven项目中?我对Maven很陌生,希望能得到一些帮助。

我想从项目中的模板生成一些代码。[一]

而不是写我自己的,谷歌搜索发现freemarker似乎被Spring使用,这对我来说是一个足够好的参考,尽管由于我还没有开始使用它,任何其他与Maven配合良好的建议也将不胜感激。

这个网站告诉我如何把它作为依赖项添加到我的pom.xml。这个SO问题告诉我生成的源应该去哪里。我无法弄清楚的是如何将它们联系在一起,所以我从模板中生成我生成的源代码,然后使用我生成的源代码,例如用于编译,测试,jar,javadoc等的常规源代码。有没有人在maven中使用了java的模板代码生成器,可以提供帮助?

[a] 我知道泛型将是通常的解决方案,事实上我正在使用它们,但我必须使用模板来处理原始情况,而不会引入复制/粘贴错误。请相信我:-)


答案 1

我为此编写了一个 maven 插件。它使用FreeMarker预处理器。

以下是 pom 的片段.xml突出显示了它的用法:

<plugins>
    <plugin>
        <configuration>
            <cfgFile>src/test/resources/freemarker/config.fmpp</cfgFile>
            <outputDirectory>target/test/generated-sources/fmpp/</outputDirectory>
            <templateDirectory>src/test/resources/fmpp/</templateDirectory>
        </configuration>
        <groupId>com.googlecode.fmpp-maven-plugin</groupId>
        <artifactId>fmpp-maven-plugin</artifactId>
        <version>1.0</version>
        <executions>
            <execution>
                <phase>generate-sources</phase>
                <goals>
                    <goal>generate</goal>
                </goals>
            </execution>
        </executions>
    </plugin>
</plugins>

此处的 cfgFile 是保存 FMPP 配置文件的路径。(如果您没有使用在FreeMarker中传递的任何特殊数据,那么一个空文件就足够了)templateDirectory是您保存FreeMarker模板的地方。outputDirectory 是要生成输出文件的位置。

我正在编写一份详细的文档,重点介绍插件的用法,并将相应地更新项目网站


答案 2

这是这项工作的另一个插件:https://code.google.com/p/maven-replacer-plugin/

从问题的原始描述来看,听起来你应该考虑创建一个Maven原型(又名项目模板):http://maven.apache.org/archetype/maven-archetype-plugin/

听起来你可能想在等式中添加一些属性:http://maven.apache.org/archetype/maven-archetype-plugin/examples/create-with-property-file.html

Maven原型功能还提供了一种使用Apache Velocity进行替换的方法(与Freemarker足够接近)...但我还没有解决那一点。


推荐