2

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

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

并在原型文件中使用了 ${myParam},但它的值没有被替换。为什么?

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

4

1 回答 1

5

您需要告诉 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这将导致所有属性被替换。

于 2012-08-30T09:50:01.797 回答