我想将参数传递给archetype-resources> src>主文件夹中的文件。 所以我将archetype-metadata.xml中的required属性声明为
<requiredProperties>
<requiredProperty key="myParam">
<defaultValue>default-value</defaultValue>
</requiredProperty>
</requiredProperties>
并在原型文件中使用$ {myParam},但其值不会被替换。为什么呢?
如果我在原型项目的pom.xml中使用自定义值,那么结果项目会用myValue替换$ {myParam}的值。它工作正常,但同样不适用于原型文件夹中的文件。为什么呢?
答案 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
,这将导致所有属性被替换。