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

Maven-版本化父pom和子pom以继承父pom版本

鲜于谦
2023-03-14
<groupId>com.mygoogle.sample</groupId>
<artifactId>workorder</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<properties>
    <project.version>1.0-SNAPSHOT</project.version>             
</properties>
<parent>
 <groupId>com.mygoogle.sample</groupId>
 <version>${project.version}</version>
 <artifactId>workorder</artifactId>     
</parent>
<artifactId>workorder-client</artifactId>
<packaging>jar</packaging>

当我使用mvn install构建工件时,我看到JAR在我的.m2文件夹中构建,但是Project.version没有替换为实际版本,即1.0-Snapshot。

>

  • 每个工件的.m2存储库中的父pom和/或子pom是否具有指定的版本,或者是否为Project.version

    我是否应该在父POM中指定Project.Version作为属性。maven文档说明Project.version可由Defualt提供。在删除父pom中的Project.version属性后,我还尝试了mvn install,但生成的项目在我的.m2文件夹中的版本仍然是{project.version},而不是实际版本

    我如何在我的父pom中设置一个版本,并使我的所有子pom具有相同的版本。例如,我想在工作订单pom中设置一个版本,而工作订单-客户端pom也应该继承相同的版本。

  • 共有1个答案

    李胤
    2023-03-14

    你的家长pom应该是这样的:

    <groupId>com.mygoogle.sample</groupId>
    <artifactId>workorder</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>pom</packaging>
    

    您的孩子pom应该是这样的:

    <parent>
       <groupId>com.mygoogle.sample</groupId>
       <version>1.0-SNAPSHOT</version>
       <artifactId>workorder</artifactId>     
    </parent>
    
    <artifactId>workorder-client</artifactId>
    <packaging>jar</packaging>
    

    这将有助于顺利地维护父级和子级之间的版本控制。
    下次要更改版本时,只需在指向父级pom目录时使用以下命令即可。

     类似资料:
    • 问题内容: 我有很多类似的项目: 在jar中编译的每个项目:project-1.1.1.1.jar,....是否可以在父文件夹中添加pom.xml,以便为所有项目定义版本1时间? 问题答案: 如果省略,则从父级继承。但是,该元素必须包含一个用于父元素的元素,因此该版本必须出现在每个单个POM中,但只能出现一次。

    • 我是使用maven和jenkins的新手。我正在尝试从父pom继承到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子波姆: 这是我如何尝试从父POM继承子POM中的依赖关系: 如果我在子POM中放置这些相同的依赖项,它会完美地工作。我使用jenkins在nexus中进行安装和部署。我使用的是maven-3.3.9。在jenkins中,我阅读了git中两个不同maven项目中

    • null 但是当我在一个项目中看到有效的POM时,我发现它还继承了、(这是一个问题,这应该是包含它的POM的描述,而不是它的子级。所有子级都有一个类似“所有POM的根”的描述有什么意义) 那么,是否存在一个实际的列表,或者它只是从父POM继承所有内容?我在工件的清单中使用了其中的一些属性,因此我想添加有意义的值

    • 我试图理解从根pom文件到中级pom文件的继承指令。说明书上写着: 定义父pom文件继承和groupid、artifactid(但不是版本),从中间级父级到根pom文件。

    • 问题内容: 我是使用Maven和Jenkins的新手。我试图继承从父pom到子pom的依赖关系,它显示以下错误: 这是我的父母POM: 这是我的孩子POM: 这是我尝试从父POM继承子POM中的依赖项的方法: 如果我将相同的依赖项放在子POM中,则效果很好。我使用jenkins在nexus中进行安装和部署。我正在使用maven-3.3.9。在詹金斯,我从git中阅读了两个不同的Maven项目中的父

    • 我希望所有子模块都继承父版本号,但子模块要求我继续对父版本号进行硬编码(ModuleA pom.xml示例): 如何将版本号放在父pom中,并让模块继承它,而不必在多个地方更新它呢?到目前为止,我已经尝试了${project.version}和${project.parent.version},但Maven似乎对此很不满意。也不能完全删除版本引用。 有人对此有很好的答案吗?