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

Dee*_*ali 2 archetypes maven maven-archetype

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

<requiredProperties>
    <requiredProperty key="myParam">
      <defaultValue>default-value</defaultValue>
    </requiredProperty>
  </requiredProperties>
Run Code Online (Sandbox Code Playgroud)

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

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

DB5*_*DB5 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>
Run Code Online (Sandbox Code Playgroud)

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