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

时间:2018-11-19 02:54:21

标签: maven maven-archetype

我想通过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值,以便可以将这些值注入{ pom.xml下的{1}}自定义项目结构。

archetype-resources

我不想通过命令行或通过提供默认值来为这些属性提供值。我希望在运行 <properties> <proxy-name>${proxy.name}</proxy-name> <proxy-desc>>${proxy.description}</proxy-desc> </properties> 命令时基于读取外部属性文件来动态初始化这些属性值。

这甚至可能吗?如果问题似乎太模糊或太简单,我谨此致歉。这是我第一次处理自定义Maven原型。

P.S-我尝试使用yaml-properties-maven-plugin,但是这些值仍未填充在原型资源pom.xml中,该属性通常在通过命令行初始化属性值时采用值。

1 个答案:

答案 0 :(得分:0)

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

我所做的是,在archetype.xml中还包含一个META-INF/maven,该文件采用资源属性文件名来替代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文件,并将archetype.properties文件写入src/main/resources文件夹中,该文件夹还包含archetype-resources文件夹原型生成的结构。

如果有人需要进一步说明我如何实现这一目标,请告诉我。