2010-08-11 80 views
11

我已經爲自定義項目設置創建了一個Maven原型,這很奇妙,但我想知道是否可以傳遞額外的參數,以便我可以做一些更有趣的模板。我想是這樣將額外的屬性傳遞給maven原型:生成

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

,並把

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

在我的模板,但似乎並沒有工作。有沒有辦法用原型做到這一點?

回答

16

你只需要提及dbHost作爲requiredPropertyMETA-INF/maven/archetype-metadata.xml

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

謝謝,你能否展開一點?我不確定我對語法足夠熟悉。 – Ceilingfish 2010-09-27 08:24:17

+2

當然。在你的原型項目中,你必須創建一個文件夾項目/ META-INF/maven。在該文件夾中,您必須創建一個名爲archetype-metadata.xml的文件。在該文件中,您應該爲每個想要的配置參數添加requiredProperty標記。你可以在這裏找到更多的細節http://maven.apache.org/archetype/maven-archetype-plugin/specification/archetype-metadata.html – devsprint 2010-09-27 13:56:34

+0

我試過這個,但遇到了這種情況是否應該在原型之間混淆 - metadata.xml(如您所建議的)或將其放入archetype.xml中,而且archetype.xml的某些內容如果放在archetype-metadata.xml中似乎不起作用,並且如果我嘗試同時存在兩個文件在我的原型一起。見http://stackoverflow.com/questions/36342578/whats-the-difference-between-archetype-xml-and-archetype-metadata-xml-in-maven – Jibbyj 2016-03-31 22:10:11

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文件。

+0

你可以發表一個關於如何傳遞屬性文件作爲參數的例子到'mvn archetype:create-from-project'? – 2016-03-31 14:46:26

0

我們需要在命令提示符中傳遞屬性值,並將其保存在archetype-metadat.xml中,但此處名稱不應包含「。」。符號,因爲它不允許您更新值。

這是Maven的限制不使用名稱,比如prod.ex.version 可以使用PROD-EX版本