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

时间:2010-10-13 14:59:20

标签: java maven-2 freemarker templating

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

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

而不是写我自己的,谷歌搜索freemarker似乎被Spring使用,这对我来说是一个很好的参考,虽然我尚未开始使用它,任何其他建议与Maven合作的人也会受到赞赏。

This website告诉我如何将它作为依赖项添加到我的pom.xml中。 This SO question告诉我生成的资源应该去哪里。我无法解决的问题是如何将它们组合在一起,因此我从模板生成生成的源代码,然后生成的源代码使用常规源代码进行编译,测试,jar,javadoc等。还有其他人使用过maven中的java模板代码生成器可以帮忙吗?

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

2 个答案:

答案 0 :(得分:20)

我为此目的编写了一个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是您希望生成输出文件的位置。

我正在编写一份详细说明插件用法的详细文档,并会相应地更新project website

答案 1 :(得分:0)

这是另一个工作插件: 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 Archetype功能还提供了一种使用Apache Velocity进行替换的方法(与Freemarker足够相近)......但我还没有做到这一点。