Как использовать генератор кода шаблона (например, freemarker) в Maven?
Как бы вы структурировали freemarker (или альтернативу) в качестве генератора кода шаблонов в проект Maven? Я новичок в Maven и буду признателен за помощь.
Я хочу создать код из шаблонов в моем проекте. [a]
Вместо того, чтобы писать свой собственный, googling нашел freemarker, который, по-видимому, используется Spring, который является для меня достаточной ссылкой, хотя, поскольку я еще не начинал с него, любые другие предложения, которые хорошо работают с Maven, также будут оценены.
Этот веб-сайт рассказывает мне, как добавить его в качестве зависимости от моего pom.xml.
Этот вопрос SO говорит мне, куда должны идти сгенерированные источники. То, что я не могу решить, - как связать все это вместе, поэтому я получаю свои сгенерированные источники, созданные из шаблонов, а затем мои сгенерированные источники используются как обычные источники для компиляции, тестирования, jar, javadoc и т.д. Кто-нибудь еще использовал генератор кода шаблона для java внутри maven и может помочь?
[a] Я знаю, что Generics будет обычным решением, и на самом деле я их использую, но я должен использовать шаблоны, чтобы справляться с примитивными случаями, не внося ошибок копирования/вставки. Пожалуйста, поверьте мне об этом: -)
Ответы
Ответ 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 - это то, где вы хотите, чтобы выходные файлы были сгенерированы.
Я нахожусь в процессе написания подробной документации, посвященной использованию плагинов, и обновит веб-сайт .
Ответ 2
Вот еще один плагин для задания:
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
Функциональность Archetype Maven также предоставляет средства для выполнения замещения с использованием Apache Velocity (примерно такая же, как у Freemarker)... но я еще не работал, что вычеркнул.