Как использовать генератор кода шаблона (например, 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)... но я еще не работал, что вычеркнул.