Как использовать генератор кода шаблона (например, freemarker) в Maven? - PullRequest
13 голосов
/ 13 октября 2010

Как бы вы структурировали Freemarker (или альтернативу) как генератор шаблонного кода в проекте Maven? Я довольно новичок в Maven и буду признателен за помощь.

Я хочу сгенерировать некоторый код из шаблонов в моем проекте. [а]

Вместо того, чтобы написать свой собственный, найденный в поиске Google freemarker , который, кажется, используется Spring , что является достаточно хорошим справочным материалом для меня, хотя я еще не начал с ним любые другие предложения, которые хорошо работают с Maven, также будут оценены.

На этом сайте рассказывается, как добавить его в качестве зависимости к моему pom.xml. Этот ТАК вопрос говорит мне, куда должны отправляться сгенерированные источники. Что я не могу понять, так это как связать все это вместе, чтобы я генерировал мои сгенерированные источники из шаблонов, а затем мои сгенерированные источники использовались как обычные источники для компиляции, тестирования, jar, javadoc и т. Д. Кто-нибудь еще использовал генератор кода шаблона для Java в Maven и может помочь?

[a] Я знаю, что дженерики были бы обычным решением, и на самом деле я их использую, но мне приходится использовать шаблоны, чтобы справляться с примитивными случаями, не допуская ошибок копирования / вставки. Пожалуйста, поверьте мне на это: -)

Ответы [ 2 ]

20 голосов
/ 13 октября 2010

Я написал для этого плагин maven.Он использует FreeMarker Pre Processor.

Вот фрагмент из 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 - это место, где вы хотите, чтобы генерировались выходные файлы.

Я пишу подробную документацию с описанием использования плагинов и обновлю веб-сайт проекта соответственно.

0 голосов
/ 20 августа 2015

Вот еще один плагин для задания: https://code.google.com/p/maven-replacer-plugin/

Исходя из исходного описания проблемы, звучит так, как будто вам стоит подумать о создании Maven Archetype (он же Project Template): 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) ...но я еще ничего не понял.

...