在行家它是很容易與以下語法,在POM來設置屬性:在Maven中,我如何在運行時動態構建屬性值?
...
<properties>
<myValue>4.06.17.6</myValue>
</properties>
...
現在我需要建立這取決於我的POM的版本屬性。爲了創建屬性我想要做以下(java的僞代碼):
String[] parts = version.split("\\.");
String.format("V%s_%s_%s_P%s", splitted[0], splitted[1],splitted[2],splitted[3]);
// example: 4.06.17.6 => V_4_06_17_P6
應該是動態的,因爲它被用作我們的資料庫標籤名稱,必須始終保持同步的版本神器。
任何想法如何創建「動態」屬性?
並且如果我沒有將插件綁定到某個階段。我使用Maven發佈插件並調用目標版本:準備。如何使它在這裏可用? – EhmKah 2012-08-17 09:52:07
如果您沒有指定階段,默認情況下它會綁定到「validate」階段,所以上面的代碼片段將在validate階段處於活動狀態時執行目標。當你直接調用一個目標時,例如'release:prepare',會發生什麼是maven直接跳過任何生命週期階段的目標,所以'release:prepare'目標本身不會看到屬性*,但'release:prepare'會看到生命週期*分叉*它。因此,'release:prepare'將無法使用該屬性來標記SCM,但該屬性將出現在發佈插件運行的分支構建中 – 2012-08-17 09:59:21
如果您想要基於屬性獲得SCM標記(應該更新你的問題反映這是你的目標,或者開始第二個問題),那麼你可能需要使用類似http://maven.apache.org/plugins/maven-release-plugin/prepare-mojo.html#tagNameFormat那不會給你你想要的'_'替換和'_P'注入。我建議更改標籤名稱要求,而不是試圖彎曲Maven ;-) – 2012-08-17 10:02:40