我们有一个多模块版本。我有一个父模块构建了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回购 - 可以避免将父版本号嵌入其中?
我希望你使用SNAPSHOT的?你在做OSGi开发吗? – khmarbaise