我已经为自定义项目设置创建了一个Maven原型,它运行得非常好,但我想知道是否可以传递额外的参数以便我可以做一些更有趣的模板。我试过像
这样的东西mvn archetype:generate -DarchetypeCatalog=local -DdbHost=localhost
并放
...
<option name="db.host.config.option" value="${dbHost}" />
...
在我的模板中,但似乎不起作用。有没有办法用原型来做到这一点?
答案 0 :(得分:17)
您只需在dbHost
中提及requiredProperty
为META-INF/maven/archetype-metadata.xml
。
<archetype-descriptor name="basic">
<requiredProperties>
<requiredProperty key="dbHost"/>
</requiredProperties>
</archetype-descriptor>
答案 1 :(得分:7)
虽然这个问题相当陈旧,但我会用Maven 3.04提供自己的经验
当从项目生成原型(从项目创建)时,您可以将属性文件作为参数传递。传入的每个属性(key = value)将依次在archetype-metadata.xml文件中生成 requiredProperty ,并将“value”作为其默认值。 />
另一方面,原型生成过程将在我们的文本文件中查找字符串“value”并将其替换为“$ {key}”(即dbHost = db.host.config.option将查找“db” .host.config.option“并将其替换为$ {dbHost})。
当使用最终项目生成的原型(使用生成)时,我们有机会为此参数提供值,使用-D 键 = 值的。因此,无需手动编辑archetype-metadata.xml文件。
答案 2 :(得分:0)
我们需要在命令提示符中传递属性值,并将其保存在archetype-metadat.xml中,但此处名称不应包含“。”符号,因为它不允许您更新值。
不使用像prod.ex.version这样的名称是Maven的限制 你可以使用prod-ex-version