13

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

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

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

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

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

4

2 回答 2

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 是您希望生成输出文件的位置。

我正在编写一份详细说明插件使用情况的文档,并将相应地更新项目网站

于 2010-10-13T16:39:10.733 回答
0

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

从问题的原始描述看来,您应该考虑创建一个 Maven Archetype(又名项目模板): 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 几乎相同)......但我还没有解决这个问题。

于 2015-08-20T16:00:29.957 回答