将额外属性传递给maven原型:generate

Cei*_*ish 13 maven-2 maven-archetype

我为自定义项目设置创建了一个Maven原型,它运行得非常好,但我想知道是否可以传递额外的参数以便我可以做一些更有趣的模板.我试过类似的东西

mvn archetype:generate -DarchetypeCatalog=local -DdbHost=localhost
Run Code Online (Sandbox Code Playgroud)

并把

...
<option name="db.host.config.option" value="${dbHost}" />
...
Run Code Online (Sandbox Code Playgroud)

在我的模板中,但似乎不起作用.有没有办法用原型做到这一点?

dev*_*int 17

你只需要提到dbHostrequiredPropertyMETA-INF/maven/archetype-metadata.xml.

<archetype-descriptor name="basic">
    <requiredProperties>
        <requiredProperty key="dbHost"/>
    </requiredProperties>
</archetype-descriptor>
Run Code Online (Sandbox Code Playgroud)

  • 当然.在您的原型项目中,您必须创建一个文件夹项目/ META-INF/maven.在该文件夹中,您必须创建一个名为archetype-metadata.xml的文件.在该文件中,您应该为您希望拥有的每个配置参数添加requiredProperty标记.您可以在此处找到更多详细信息http://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-metadata.html (2认同)

mag*_*ohl 7

虽然这个问题相当陈旧,但我会提供自己的Maven 3.04经验

虽然生成从项目(原型创建自项目),你可以通过一个属性文件作为参数.传入的每个属性(key = value)将依次在archetype-metadata.xml文件中生成requiredProperty,其中"value"作为其默认值.
另一方面,原型生成过程将在我们的文本文件中查找字符串"value"并将其替换为"$ {key}" (即dbHost = db.host.config.option将查找"db.host". config.option"并用$ {dbHost}替换它.

使用原型生成最终项目时(使用generate),我们有机会为此参数提供值,-D key = value.因此,无需手动编辑archetype-metadata.xml文件.

  • 如果您在根文件夹中创建一个具有默认名称(“archetype.properties”)的文件,则无需指定任何属性,它将自动选取。 (3认同)