当前位置: 首页 > 知识库问答 >
问题:

是否使Maven子POM具有与父POM相同的版本号?[副本]

惠野
2023-03-14
<groupId>com.something.project</groupId>
<artifactId>MyProject</artifactId>
<packaging>pom</packaging>
<version>1.0.123</version>

<modules>
    <module>ModuleA</module>
    <module>ModuleB</module>
    <module>ModuleC</module>
</modules>

我希望所有子模块都继承父版本号1.0.123,但子模块pom.xml要求我继续对父版本号进行硬编码(ModuleA pom.xml示例):

<artifactId>ModuleA</artifactId>
<name>Some Amazing Thing</name>

<parent>
    <relativePath>../</relativePath>
    <artifactId>MyProject</artifactId>
    <version>1.0.123</version>
    <groupId>com.something.project</groupId>
</parent>

如何将版本号放在父pom中,并让模块继承它,而不必在多个地方更新它呢?到目前为止,我已经尝试了${project.version}和${project.parent.version},但Maven似乎对此很不满意。也不能完全删除版本引用。

有人对此有很好的答案吗?

共有1个答案

宋成天
2023-03-14

通常,如果您使用maven管理版本,那么将父版本放在子模块POM中是没有问题的。当您运行maven发行版插件时,它将为您更新所有子模块中的所有版本。

更新:

如果您想自己管理版本,那么您可能会遇到一些麻烦。我非常肯定您必须在每个pom中至少指定一次版本号。您可能可以通过编写几个脚本来为您进行递归搜索和替换(而不是手动进行)来简化事情。

 类似资料:
  • 当我使用mvn install构建工件时,我看到JAR在我的.m2文件夹中构建,但是Project.version没有替换为实际版本,即1.0-Snapshot。 > 每个工件的.m2存储库中的父pom和/或子pom是否具有指定的版本,或者是否为Project.version 我是否应该在父POM中指定Project.Version作为属性。maven文档说明Project.version可由De

  • 我有一个父级pom a和子级pom B、C和D。在B、C和D中,我有相同类型的依赖关系。 ie母Pom

  • 我正试着做一个包含所有项目的胖uber罐子。如果我做了“MVN包”,我得到一个uber jar下的“blah”项目标签文件夹。(blah项目有主类。)uber jar包含所有项目(作为文件夹而不是jar),但当我运行它时,它似乎无法识别feature1和feature2项目。 我在上面添加了feature1和feature2的依赖项,以便它们在uber jar文件中。这错了吗?附注。blahmes

  • 我有这样配置的父pom: 我的孩子波姆: 我想在我的类路径中使用4.3.5版本,因为目前我收到错误消息,不应修改父版本: 任何想法如何防止覆盖4.2.9版本?

  • 我有一个带有子pom B、C和D的父pom A,在B、C和D中,我有相同类型的依赖项。 ie父Pom 儿童Pom 到目前为止,我已经尝试过编辑插件surefire,当试图排除子pom的测试范围时,它不起作用。 我的问题是,是否有一种方法可以将概要文件添加到父pom中,以排除所有子pom的类型测试jar的所有依赖项。谢谢

  • 我们的团队有多个项目;大多数项目只是库。为了简单起见,我们假设这些库彼此不依赖,只有一个项目使用它们,例如: 为了避免“Main”中的意外,我们希望确保我们自己的所有项目都使用相同版本的第三方库,例如“Lib-A”和“Lib-B”都是使用相同版本的库X构建和测试的。 为了实现这一点,我们使用带有