2017-08-31 151 views
1

在我的maven原型定義中,我想在用戶不輸入任何內容時將默認版本設置爲0.0.1-SNAPSHOT。但是,當我基於原型創建項目時,總是會提示我輸入版本,默認值爲1.0-SNAPSHOT。自定義maven原型:未使用版本的默認值

如何正確執行此操作?

我在archetype.properties文件中定義了一個版本屬性,當我編譯原型時,它說的是正確的版本,當我更改archetype.properties中的值時,我可以看到控制檯輸出相應地發生了變化。

就在創建基於原型的項目時,我會再次提示您輸入版本。

感謝您的幫助和提示!

(我將在必要時提供代碼)

+0

什麼是你的原型元數據模式? – nullpointer

+0

並指定'-Dversion = 0.0.1-SNAPSHOT'沒有幫助? – nullpointer

+0

@nullpointer我認爲如果用戶沒有指定-Dversion,那麼它會使用一些後備。或者 - 顛覆始終是強制性的? – user3629892

回答

3

在你二原型的元數據可以定義自定義屬性。看看META-INF/maven中的archetype-metadata.xml。例如:

my-archetype 
| 
+ src 
    | 
    + main 
    | 
    + resources 
     | 
     + META-INF 
     | 
     + maven 
      | 
      + archetype-metadata.xml 

version自定義屬性應該是這樣的:

<requiredProperties> 
    <requiredProperty key="version"> 
     <defaultValue>0.0.1-SNAPSHOT</defaultValue> 
    </requiredProperty> 
<requiredProperties> 

的更多細節the docs

當您運行mvn archetype:generate命令引用的原型與上面的配置,你會在控制檯輸出中看到這一點:

[INFO] Using property: version = 0.0.1-SNAPSHOT 

或者,如果您運行mvn archetype:generate命令與參數-Dversion=FOO那麼你會看到這在控制檯輸出:

[INFO] Using property: version = FOO 

注意:這個版本是,當然,從限定所述原型本身的版本而不是模件的版本的archetypeVersion單獨e 按原型生產

+0

你的意思是requiredProperties而不是requiredParameters? – user3629892

+0

哎呀,是的。我已經更新了答案。謝謝。 – glytching

+0

那麼,首先謝謝,它的工作原理:)但是,我爲groupId和包做了同樣的事情,但它不斷提示我這些,它使用原型本身的groupId作爲默認值。但:在生成的pom中,groupId顯示正確(我通過執行字符串替換來獲取它的形式artifactId)。任何想法我仍然失蹤? – user3629892