2017-04-07 86 views
0

我們有一個多模塊版本。我有一個父模塊構建了17個其他模塊,其中一個模塊本身是另一個多模塊構建,構建了另外三個模塊。maven模塊構建。不指定具有兒童模塊的版本

在我父模塊:

<groupId>com.veggicorp.foobar</groupId> 
<artifactId>foobar-parent</artifactId> 
<version>5.4.3</version> 

<properties> 
    <!-- Definition of versions for third party jars --> 
</properties> 

<dependencyManagement> 
    <!-- Another way to specify dependencies throughout the project --> 
</dependencyManagement> 

<modules> 
    <!-- List o' Modules --> 
</modules> 

通過使用屬性來指定版本(使用dependencyManagement),我發現我可以在子模塊擺脫幾乎任何類型的版本編號的。這使得維護複雜項目變得非常簡單,因爲大部分更改都將在父項中進行。當我們做新版本時,我不必更新其他pom.xml文件。

然而,有一個痛處:我必須指定父版本:

<parent> 
    <groupId>com.veggicorp.foobar</groupId> 
    <artifactId>foobar-parent</artifactId> 
    <version>5.4.3</version> <!-- Must Specify --> 
</parent> 

<artifactId>foo-server</artifactId> 
<!-- No need for a version --> 

<build> 
    .... 

請注意,我並不需要指定孩子的版本。它默認採用父母的版本。但是,儘管所有這些都位於單個Git存儲庫中,並且所有模塊對於此項目都是唯一的,並且不在其他任何地方使用,但我必須填寫父級的版本號。我們甚至不會將這些模塊的jar部署到我們的Maven倉庫。這是一個巨大的構建。

我知道我可以使用版本插件來更新所有這些模塊,但這意味着我們的開發人員必須記得在他們創建新版本的項目時使用該插件。 (我對開發人員沒有太大的信心,哎,我們的wiki上有方向how to tie your shoes。)

那麼,有沒有一種方法可以讓我們的子模塊 - 在父模塊中籤出大的Git回購 - 可以避免將父版本號嵌入其中?

+0

我希望你使用SNAPSHOT的?你在做OSGi開發嗎? – khmarbaise

回答

0

答案是否定的,您必須在所有子模塊中包含父級信息,並且該信息必須包含該版本。

然而,一旦你已經設置爲可以使用的版本插件,以便管理您所有的勁歌看到http://www.mojohaus.org/versions-maven-plugin/

例如,從頂級的版本:

mvn versions:set -DnewVersion=1.1 

將改變所有的孩子和父母。

+0

我知道版本插件,但開發人員使用Eclipse,而且大多數人對Maven並不擅長。我握了很多手。只要讓他們在發佈它時更改簡單jar項目的版本號就足夠了。 –

+0

@DavidW。所以你正在開發OSGi ...如果你這樣使用Tycho?還有一個tycho-version插件,它也處理改變MANIFEST.MF,feature.xml等。 – khmarbaise

+0

從[Maven 3.5.0-beta-1]開始(https://maven.apache.org/maven-ci-friendly。 HTML)這是[不是真的了](http://blog.soebes.de/blog/2017/04/02/maven-pom-files-without-a-version-in-it/)。 – khmarbaise