2011-11-06 81 views
20

我有一個像一堆項目:您可以繼承Maven中父POM的版本嗎?

project1 
project2 
project3 
........ 
project111 

每個項目在罐子編譯:項目1.1.1.1.jar,.... 是否有可能在父文件夾中添加的pom.xml,所以我可以定義版本1的所有項目的時間?

回答

28

如果您忽略<version/>它從父項繼承。但<parent/>元素必須包含父母的<version/>,因此該版本必須出現在每個POM中,但只能出現一次。

23

你可以這樣做:

parent pom.xml: 
<project> 
    ... 
    <version>${my-project-version}</version> 
    ... 
    <properties> 
    <my-project-version>1.1.1</my-project-version> 
    </properties> 
</project> 

child pom.xml: 
<project> 
    ... 
    <parent> 
    <relativePath>../parent/pom.xml</relativePath> 
    <version>${my-project-version}</version> 
    </parent> 
    ... 
</project> 

至少,這對我的作品。

+1

但是,你是否用'-D'在命令行上設置了'my-project-version'? – oberlies

+0

我沒有,如果我沒記錯的話。但它確實需要父母已經以正確的相對路徑檢出。 –

+6

不幸的是,這個解決方案根本無法使用Maven 3.0.4 – cbaldan

5

使用一個屬性並引用它可以工作...除非您使用發佈插件來執行發佈,在這種情況下,它會從版本中刪除「-SNAPSHOT」,並自動將所有實例替換爲實際版本號 - 您設置的替換變量。在每個POM中設置它並使用發佈插件來標記,增加和釋放項目可能會更好。