【问题标题】:How do I use a template code generator (eg freemarker) in Maven?如何在 Maven 中使用模板代码生成器(例如 freemarker)?
【发布时间】:2011-04-24 21:56:39
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: java maven-2 freemarker templating


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

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

    【讨论】:

    • 文档进展如何? :-) 我不知道如何从 pom(例如 project.version)传递值,以便 freemarker 插件知道它们。
    • 感谢插件!这对我刚刚写的一个库非常有用! github.com/mintern-java/functions
    • @bacar:看看 Brandon Mintern 的 GitHub 项目中的一个很好的工作示例:github.com/mintern-java/primitive
    【解决方案2】:

    这是该工作的另一个插件: 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 几乎相同)......但我还没有解决这个问题。

    【讨论】:

    • 可悲的是,即使是 Github 端口 github.com/beiliubei/maven-replacer-plugin 和分叉也有很多技术债务,所以它看起来不能按原样使用。我认为原型方法不会在代码构建器项目中起作用。
    猜你喜欢
    • 2013-05-04
    • 1970-01-01
    • 2017-12-08
    • 2018-11-01
    • 2012-02-18
    • 2013-10-18
    • 2014-07-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多