Maven:通过属性或 yaml 文件在 archetype-metadata.xml 中传递 requiredProperty 值

Maven: passing requiredProperty values in archetype-metadata.xml through properties or yaml file

我想通过 archetype-metadata.xml 的 requiredProperty 使用自定义属性来生成 maven 原型 -

<requiredProperties>
    <requiredProperty key="proxy-name">
        <defaultValue>${proxy.name}</defaultValue>
    </requiredProperty>
    <requiredProperty key="proxy-desc">
        <defaultValue>${proxy.description}</defaultValue>
    </requiredProperty>
</requiredProperties>

但是,我的要求是使用属性文件或 yaml 文件中提供的 key:value 对来初始化这些 requiredProperty 值,这样我就可以得到这些值注入 archetype-resources.

下自定义项目结构的 pom.xml
  <properties>
    <proxy-name>${proxy.name}</proxy-name>
    <proxy-desc>>${proxy.description}</proxy-desc>
  </properties>

我不想通过命令行或提供默认值来为这些属性提供值。当我 运行 mvn archetype:generate 命令时,我希望基于读取外部属性文件动态初始化这些 属性 值。

这可能吗?如果这个问题看起来太模糊或太初级,我提前道歉。这是我第一次处理自定义 Maven 原型。

P.S - 我已经尝试使用 yaml-properties-maven-plugin,但是这些值仍然没有填充到原型资源 pom.xml 中,它通常在初始化时取值 [=37] =] 值通过命令行。

因此,回答我自己的问题并帮助遇到同样问题的任何人:

我所做的是在 META-INF/maven 中也包含一个 archetype.xml,它接收资源属性文件名以用于替换 archetype-metadata.xml 中的自定义值。 archetype.xml 的外观如下:

<?xml version="1.0" encoding="UTF-8"?>
<archetype>
    <id>quickstart-archetype</id>
    <sources/>
    <resources>
        <resource>archetype.properties</resource>
    </resources>
</archetype>

这样 yaml-maven-properties 插件读取 yaml 文件 并在 src/main/resources 文件夹中写入一个 archetype.properties 文件,该文件还包含 archetype-resources 原型生成的文件夹结构。

如果有人需要更多说明我是如何做到这一点的,请告诉我。