【问题标题】:Can you inherit the version from the parent POM in Maven? [duplicate]你可以从 Maven 中的父 POM 继承版本吗? [复制]
【发布时间】:2011-12-23 00:43:21
【问题描述】:

我有很多项目,例如:

project1
project2
project3
........
project111

在jar中编译的每个项目:project-1.1.1.1.jar, .... 是否可以在父文件夹中添加 pom.xml 以便我可以为所有项目定义版本 1 时间?

【问题讨论】:

    标签: java maven project


    【解决方案1】:

    如果您省略<version/>,它将从父级继承。但是,<parent/> 元素必须包含父元素的 <version/>,因此版本必须在每个 POM 中出现,但只能出现一次。

    【讨论】:

    • 你还是要在子pom中指定(父)版本号...
    【解决方案2】:

    你可以这样做:

    parent pom.xml:
    <project>
      ...
      <version>${my-project-version}</version>
      ...
      <properties>
        <my-project-version>1.1.1</my-project-version>
      </properties>
    </project>
    
    child pom.xml:
    <project>
      ...
      <parent>
        <relativePath>../parent/pom.xml</relativePath>
        <version>${my-project-version}</version>
      </parent>
      ...
    </project>
    

    至少,这对我有用。

    【讨论】:

    • 但是你会在命令行中设置my-project-version-D吗?
    • 如果我没记错的话,我没有。但它确实需要 parent 已经在正确的相对路径中签出。
    • 不幸的是,这个解决方案根本不适用于 Maven 3.0.4
    • 这似乎在 maven 3 中用[WARNING] 'version' contains an expression but should be a constant.解决了
    • 要获取pom文件中的实际版本,可以按照这里的详细说明:maven.apache.org/maven-ci-friendly.html
    【解决方案3】:

    使用属性并引用它可以工作...除非您使用发布插件进行发布,在这种情况下,它会从版本中删除“-SNAPSHOT”并自动用真实版本号替换所有实例 - 这会覆盖任何替换您设置的变量。您最好只在每个 POM 中设置它并使用发布插件来标记、增加和发布您的项目。

    【讨论】:

      猜你喜欢
      • 2017-02-22
      • 2020-12-28
      • 2012-12-22
      • 2012-03-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-11
      • 2012-05-21
      相关资源
      最近更新 更多