[如何将Freemarker(或替代结构)构造为Maven项目中的模板代码生成器?我是Maven的新手,希望能获得一些帮助。
我想从我项目的模板中生成一些代码。 [a]
不是写我自己的,而是谷歌搜索发现freemarker似乎已被Spring使用,这对我来说是一个很好的参考,尽管由于我还没有开始使用它,所以其他建议也可以与Maven一起使用也将不胜感激。
This website告诉我如何将其添加为对pom.xml的依赖。This SO question告诉我生成的源应该去哪里。我无法解决的是如何将所有内容捆绑在一起,因此我从模板生成了生成的源,然后将生成的源用作常规源,如编译,测试,jar,javadoc等的常规源。 Maven中的Java模板代码生成器,可以帮忙吗?
[a]我知道泛型将是通常的解决方案,实际上我正在使用它们,但是我必须使用模板来处理原始情况,而不会引入复制/粘贴错误。请相信我:-)
我为此目的编写了一个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。
这里是该工作的另一个插件: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足够近...但是我还没有解决这个问题。
[如果您有兴趣,我们从另一个freemarker maven插件创建了一个fork,它具有一些用于生产环境的功能:
该项目位于github freemarker-maven-plugin
基于另一个缺少上述功能的项目的分支:enter link description here