【问题标题】:Get version from directory name从目录名称获取版本
【发布时间】:2014-03-13 04:02:03
【问题描述】:

我有一堆项目。它们都必须具有相同的版本 = 分支目录名称(例如“7.15.0”)。

为了实现这一点,我用代码制作了一个父 pom:

<version>${branch}</version>
<properties>
    <branch>${project.file.parentFile.parentFile.parentFile.name}</branch>
</properties>

我的大部分项目和子项目都在目录中,其中 ../.. 是分支目录。他们的 poms 包含以下内容:

<parent>
    <groupId>parentPomGroupId</groupId>
    <artifactId>parentPomArtifactId</artifactId>
    <version>${branch}</version>
</parent>

但并非所有项目都处于同一级别,因此我必须控制并检查它们的位置,并在需要时添加到它们的 pom 正确分支路径:

<properties>
    <branch>${project.file.parentFile.parentFile.name}</branch>
</properties>

在项目构建时,我在日志中看到:

[INFO] Building appcore-utils ${project.file.parentFile.parentFile.name}

如果我在分支中设置常量 - 日志包含版本。请告诉我,我怎样才能在我的父 pom 中只解析一次属性“分支”?因此,如果我在子项目中使用 ${branch},它会解析为常量,该常量已在父 pom.xml 中计算。或者也许还有另一种方法可以在项目版本中使用分支目录名称?

【问题讨论】:

    标签: maven


    【解决方案1】:

    我不认为你试图实现的目标在当前 (3.1+) maven 方面是有效的。 version 标签现在应该用一个常量填充,尽管不久前可以使用Maven version with a property 中描述的表达式,请查看@JanPeta 的最后一条评论。顺便说一句,Frederic Close 的解决方案不再起作用(对于安装在我的系统中的 maven-3.1.1)。

    或者,您可以更改项目中生成的 artifacts 的版本,我有一个可行的解决方案(而不是从目录名称中获取版本,我使用 git describe... 输出)但是它真的非常难看,现在我认为用这种方法解决所有问题不值得花时间。

    【讨论】:

    • 感谢您的回答!我现在使用 mvn 版本:set -DnewVersion=1.2.3.
    猜你喜欢
    • 2019-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-24
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多