为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

BIG阳 2019-11-25 11:01:23
我有两个项目:父项目:A,子项目:BA / 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中?
查看完整描述

3 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

自Maven 3.5.0以来,使用${revision}占位符对此有一个不错的解决方案。有关详细信息,请参见FrVaBe的答案。对于以前的Maven版本,请参见下面的原始答案。


不,没有。您始终必须指定父母的版本。幸运的是,它继承了大多数情况下所需的模块版本。此外,Maven Release Plugin会自动更改该父级的版本声明,因此-实际上-只要使用Maven Release Plugin进行发布或仅更改版本,就可以在2个位置拥有版本不是问题。


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


查看完整回答
反对 回复 2019-11-25
?
慕雪6442864

TA贡献1812条经验 获得超5个赞

Maven并非以这种方式工作,但是存在一种解决方法可以实现此目标(也许有副作用,您必须尝试一下)。诀窍是告诉子项目通过其相对路径而不是其纯Maven坐标来找到其父项,并且还要外部化属性中的版本号:


父pom

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

<artifactId>parent</artifactId>

<version>${global.version}</version>

<packaging>pom</packaging>


<properties>

   <!-- Unique entry point for version number management --> 

   <global.version>0.1-SNAPSHOT</global.version>

</properties>

儿童绒球

<parent>

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

   <artifactId>parent</artifactId>

   <version>${global.version}</version>

   <relativePath>..</relativePath>    

</parent>


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

<artifactId>kid</artifactId>

我在我的项目中使用了一段时间的技巧,没有任何具体问题,除了maven在构建开始时会记录很多警告(这不是很优雅)的事实。


编辑

似乎maven 3.0.4不再允许这种配置。


查看完整回答
反对 回复 2019-11-25
  • 3 回答
  • 0 关注
  • 2229 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信