Maven项目版本继承-我必须指定父版本吗?

我有两个项目:父项目:A,子项目:B


A / pom.xml:


<groupId>com.dummy.bla</groupId>

<artifactId>parent</artifactId>

<version>0.1-SNAPSHOT</version>

<packaging>pom</packaging>

在B / pom.xml中,我有:


    <parent>

        <groupId>com.dummy.bla</groupId>

        <artifactId>parent</artifactId>

        <version>0.1-SNAPSHOT</version>     

    </parent>


    <groupId>com.dummy.bla.sub</groupId>

    <artifactId>kid</artifactId>

我希望B继承父版本,所以我需要放在的唯一地方0.1-SNAPSHOT是A/pom.xml。但是,如果我<version>0.1-SNAPSHOT</version>从B/pom.xml父项下删除,则maven会抱怨父项缺少版本。


有没有一种我可以使用的方法${project.version}或类似的方法来避免同时出现01.-SNAPSHOT在两个pom中?


BIG阳
浏览 2230回答 3
3回答

小怪兽爱吃肉

自Maven 3.5.0以来,使用${revision}占位符对此有一个不错的解决方案。有关详细信息,请参见FrVaBe的答案。对于以前的Maven版本,请参见下面的原始答案。不,没有。您始终必须指定父母的版本。幸运的是,它继承了大多数情况下所需的模块版本。此外,Maven Release Plugin会自动更改该父级的版本声明,因此-实际上-只要使用Maven Release Plugin进行发布或仅更改版本,就可以在2个位置拥有版本不是问题。请注意,在某些情况下,此行为实际上还可以,并且可以提供您可能需要的更多灵活性。有时您想使用以前父母的某些版本来继承,但是这不是主流情况。

慕雪6442864

Maven并非以这种方式工作,但是存在一种解决方法可以实现此目标(也许有副作用,您必须尝试一下)。诀窍是告诉子项目通过其相对路径而不是其纯Maven坐标来找到其父项,并且还要外部化属性中的版本号:父pom<groupId>com.dummy.bla</groupId><artifactId>parent</artifactId><version>${global.version}</version><packaging>pom</packaging><properties>&nbsp; &nbsp;<!-- Unique entry point for version number management -->&nbsp;&nbsp; &nbsp;<global.version>0.1-SNAPSHOT</global.version></properties>儿童绒球<parent>&nbsp; &nbsp;<groupId>com.dummy.bla</groupId>&nbsp; &nbsp;<artifactId>parent</artifactId>&nbsp; &nbsp;<version>${global.version}</version>&nbsp; &nbsp;<relativePath>..</relativePath>&nbsp; &nbsp;&nbsp;</parent><groupId>com.dummy.bla.sub</groupId><artifactId>kid</artifactId>我在我的项目中使用了一段时间的技巧,没有任何具体问题,除了maven在构建开始时会记录很多警告(这不是很优雅)的事实。编辑似乎maven 3.0.4不再允许这种配置。
打开App,查看更多内容
随时随地看视频慕课网APP