如何在maven原型中生成动态文件?

时间:2012-08-30 09:22:09

标签: maven archetypes maven-archetype

我想将参数传递给archetype-resources> src>主文件夹中的文件。 所以我将archetype-metadata.xml中的required属性声明为

<requiredProperties>
    <requiredProperty key="myParam">
      <defaultValue>default-value</defaultValue>
    </requiredProperty>
  </requiredProperties>

并在原型文件中使用$ {myParam},但其值不会被替换。为什么呢?

如果我在原型项目的pom.xml中使用自定义值,那么结果项目会用myValue替换$ {myParam}的值。它工作正常,但同样不适用于原型文件夹中的文件。为什么呢?

1 个答案:

答案 0 :(得分:4)

您需要告诉Velocity引擎您的文件应该用作Velocity模板(这样它实际上会替换它在文件中找到的任何属性)。您可以通过扩展archetype-metadata.xml文件并定义fileSet来完成此操作。

我不确定您确切的文件夹结构以及相关文件的名称是什么,但这些内容应该有效:

<?xml version="1.0" encoding="UTF-8"?>
<archetype-descriptor name="basic">
    <requiredProperties>
        <requiredProperty key="myParam">
            <defaultValue>default-value</defaultValue>
        </requiredProperty>
    </requiredProperties>
    <fileSets>
        <fileSet filtered="true" packaged="false">
            <directory>src/main</directory>
            <includes>
                <include>**/*</include>
            </includes>
        </fileSet>
    </fileSets>
</archetype-descriptor>

基本上,上述内容告诉它包含src/main下的所有文件,重要部分是filtered=true,这将导致所有属性被替换。