Как внедрить один файл в другой с помощью Maven?

У меня есть два файла в моем src/main/resources, и я хочу, чтобы тело одного файла было вставлено в определенное место другого файла. Таким образом, один файл должен быть шаблоном, а другой файл будет данными для заполнения этого шаблона (что-то вроде Apache Velocity).

Могу ли я сделать это с помощью какого-либо существующего плагина Maven?

Заранее спасибо.

Решение: я решил не использовать специальный плагин, а добавить это в pom.xml:

    <build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-antrun-plugin</artifactId>
            <version>1.6</version>
            <executions>
                <execution>
                    <id>rng-injection</id>
                    <phase>generate-resources</phase>
                    <configuration>
                        <target>
                            <echo message="Injecting RNG schemes"/>

                            <copy file="${main.resources}/RNG/enets-template.rng"
                                  tofile="${main.resources}/RNG/enets.rng"
                                  verbose="true"
                                  overwrite="true"/>

                            <copy file="${main.resources}/RNG/modeldefinition-template.rng"
                                  tofile="${main.resources}/RNG/modeldefinition.rng"
                                  verbose="true"
                                  overwrite="true"/>


                            <property name="enets-def" value="${main.resources}/RNG/enetsdefinitions.rng"/>
                            <loadfile property="def-file" srcfile="${enets-def}"/>
                            <replace file="${main.resources}/RNG/enets.rng">
                                <replacefilter token="{!enets-definition!}" value="${def-file}"/>
                            </replace>

                            <replace file="${main.resources}/RNG/modeldefinition.rng">
                                <replacefilter token="{!enets-definition!}" value="${def-file}"/>
                            </replace>
                        </target>
                    </configuration>
                    <goals>
                        <goal>run</goal>
                    </goals>
                </execution>

            </executions>
        </plugin>
    </plugins>
</build>

person Ivan Mushketyk    schedule 01.05.2011    source источник


Ответы (2)


Я не знаю ни одного плагина, который предоставлял бы то, что вы хотите сделать, но для начала вы могли бы прочитать тело в свойство и использовать фильтрацию ресурсов, чтобы внедрить это свойство во второй файл.

person Thomas    schedule 01.05.2011

Пример того, как создать подключаемый модуль для выполнения чего-либо, связанного с этим, см. в генераторе кодов коллекций mojo на веб-сайте Apache Mahout. Это плагин, который использует скорость для генерации java-кода.

person bmargulies    schedule 01.05.2011