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


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

mvn archetype:generate -DarchetypeCatalog=local -DdbHost=localhost

并把

...
<option name="db.host.config.option" value="${dbHost}" />
...

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


13
2017-08-11 08:36


起源




答案:


你只需要提一下 dbHost 如 requiredProperty 在 META-INF/maven/archetype-metadata.xml

<archetype-descriptor name="basic">
    <requiredProperties>
        <requiredProperty key="dbHost"/>
    </requiredProperties>
</archetype-descriptor>

17
2017-09-26 17:49



谢谢,你能扩展一下吗?我不确定我对语法的熟悉程度。 - Ceilingfish
当然。在您的原型项目中,您必须创建一个文件夹项目/ META-INF / maven。在该文件夹中,您必须创建一个名为archetype-metadata.xml的文件。在该文件中,您应该为您希望拥有的每个配置参数添加requiredProperty标记。你可以在这里找到更多细节 maven.apache.org/archetype/maven-archetype-plugin/specification/... - devsprint
我已经尝试了这个,但是它是否应该进入archetype-metadata.xml(如你所建议的)或者将它放在archetype.xml中,并且如果我把它放在archetype.xml的某些内容似乎不起作用之间会产生混淆它在archetype-metadata.xml中,如果我试图将我的原型中的两个文件放在一起,就会遇到问题。看到 stackoverflow.com/questions/36342578/... - Jibbyj


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

发电 一个项目的原型(创建自项目),您可以传递属性文件作为参数。每一处房产 (键=值) 传入将依次生成一个 requiredProperty 在archetype-metadata.xml文件中,“value”作为其默认值。
另一方面,原型生成过程将在我们的文本文件中查找字符串“value”并将其替换为“$ {key}” (即dbHost = db.host.config.option将查找“db.host.config.option”并将其替换为$ {dbHost})
 

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


7
2017-07-20 06:10



你能发布一个关于如何将属性文件作为参数传递给的示例 mvn archetype:create-from-project? - Matteo Guarnerio


我们需要在命令提示符中传递属性值,并将其保存在archetype-metadat.xml中,但此处名称不应包含“。”符号,因为它不允许您更新值。

不使用像prod.ex.version这样的名称是Maven的限制 你可以使用prod-ex-version


0
2017-12-09 11:28