maven parent 覆盖_Maven项目版本继承 – 我必须指定父版本?

问题描述

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

在A /pom.xml中:

com.dummy.bla

parent

0.1-SNAPSHOT

pom

在B /pom.xml中,我有:

com.dummy.bla

parent

0.1-SNAPSHOT

com.dummy.bla.sub

kid

我想要B从父级继承版本,所以我需要把0.1-SNAPSHOT放在A/pom.xml中的唯一地方就是A/pom.xml。但是,如果我从父节下的B/pom.xml中删除0.1-SNAPSHOT,maven会抱怨父级的缺少版本。

有没有办法我可以使用${project.version}或类似的东西,以避免在两个poms中有01.-SNAPSHOT?

最佳解决方案

不,没有。您必须指定父级版本。幸运的是,它被继承为模块的版本,在大多数情况下是理想的。此外,这个父母的版本声明由Maven Release Plugin自动触发,所以 – 实际上,只要你使用Maven Release Plugin发布或者只是碰撞版本,你就可以在2个地方使用版本。

请注意,在某些情况下,此行为实际上是可行的,并提供了更多的灵活性,您可能需要。有时你想使用一些以前的父母的版本来继承,但这不是主流的情况。

次佳解决方案

Maven不是以这种方式工作,而是为了实现这一目标而存在一种解决方法(可能是副作用,你将不得不尝试一下)。诀窍是告诉孩子项目通过它的相对路径而不是纯粹的maven坐标找到它的父项,而且外部化一个属性中的版本号:

父母pom

com.dummy.bla

parent

${global.version}

pom

0.1-SNAPSHOT

小孩pom

com.dummy.bla

parent

${global.version}

..

com.dummy.bla.sub

kid

我把这个伎俩用于我的一个项目一段时间,没有任何具体问题,除了maven在构建开始时记录了很多警告,这不是很优雅。

EDIT

似乎maven 3.0.4不允许这样的配置了。

第三种解决方案

最简单的更新版本imo的方法:

mvn versions:set -DgenerateBackupPoms=false

(在您的根/父pom文件夹中这样做)。

你的poms被解析,你被问到要设置哪个版本。

第四种方案

是的,但您也可以使用"mvn release:update-versions -DdevelopmentVersion={version}"来更新POM中的版本号

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值