Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Maven:从子模块检索主模块版本_Maven - Fatal编程技术网

Maven:从子模块检索主模块版本

Maven:从子模块检索主模块版本,maven,Maven,我的Maven项目是多模块的,通常版本号不同步。例如,我可以将主POM版本控制为1.2.3-SNAPSHOT,将子模块版本控制为3.4.5-SNAPSHOT(不保持同步的主要原因是模块经常从一个项目移动到另一个项目,并且必须保持其版本) 现在我想把主项目版本放在包含主模块(或webapp等)的模块资源中,它当然是一个子模块。这意味着我需要从子模块访问主pom版本 也要知道,我的项目有3或4级;因此,主pom是子模块的祖父,而不仅仅是父模块 尽管我对Maven有一些经验,包括一些高级的东西,但到目

我的Maven项目是多模块的,通常版本号不同步。例如,我可以将主POM版本控制为1.2.3-SNAPSHOT,将子模块版本控制为3.4.5-SNAPSHOT(不保持同步的主要原因是模块经常从一个项目移动到另一个项目,并且必须保持其版本)

现在我想把主项目版本放在包含主模块(或webapp等)的模块资源中,它当然是一个子模块。这意味着我需要从子模块访问主pom版本

也要知道,我的项目有3或4级;因此,主pom是子模块的祖父,而不仅仅是父模块

尽管我对Maven有一些经验,包括一些高级的东西,但到目前为止我还无法解决这个问题


谢谢。

它应该与
${project.parent.version}

一起工作。太明显的答案是让大师级POM将大师级版本放在子模块读取的属性中。我错过了什么?。。。子模块从大师那里继承的事实。他们继承了属性的定义,而不是值,因此他们用自己的版本在本地重新计算${project.version}。啊,也许这样就行了。我想建议的是定义一个属性,比如说“grandmaster.version”,在grandmaster中用字面版本冗余地定义。没有局部碰撞。是的,但多余的东西不好。。。你总是忘记在发布后更新它(并且不能自动从快照切换到发布)。你的直接建议对我不起作用,因为我有三个和四个级别的儿童POM。但是你让我重新阅读了手册,实际上
${project.parent}
指的是父对象的全部属性,包括它的父对象。换句话说,
${project.parent.parent.version}
适用于三个级别。我更喜欢独立于级别数工作的方法,但这种方法目前还不错。可能使用Groovy Maven插件或类似插件,就可以编写一个小脚本,通过Maven属性导航到根模块。