如何使用Maven将一个文件注入另一个文件?

时间:2011-05-01 12:35:47

标签: java 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>

2 个答案:

答案 0 :(得分:2)

我不知道任何提供你想要做的插件,但作为一个开始,你可以将主体读入属性并使用资源过滤将该属性注入第二个文件。

答案 1 :(得分:1)

有关如何构建插件以执行与此相关的操作的示例,请参阅Apache Mahout上的集合代码生成器mojo。它是一个使用velocity来生成java代码的插件。