如何将Freemarker(或替代方案)作为模板代码生成器构建到Maven项目中?我对Maven很新,并希望得到一些帮助。
我想从项目中的模板生成一些代码。 [a]
而不是写我自己的,谷歌搜索freemarker似乎被Spring使用,这对我来说是一个很好的参考,虽然我尚未开始使用它,任何其他建议与Maven合作的人也会受到赞赏。
This website告诉我如何将它作为依赖项添加到我的pom.xml中。 This SO question告诉我生成的资源应该去哪里。我无法解决的问题是如何将它们组合在一起,因此我从模板生成生成的源代码,然后生成的源代码使用常规源代码进行编译,测试,jar,javadoc等。还有其他人使用过maven中的java模板代码生成器可以帮忙吗?
[a]我知道泛型将是通常的解决方案,事实上我正在使用它们,但我必须使用模板来处理原始情况,而不会引入复制/粘贴错误。请相信我: - )
答案 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足够相近)......但我还没有做到这一点。