从目录名称获取版本

时间:2014-03-13 04:02:03

标签: maven

我有很多项目。所有这些都必须具有相同的版本=分支目录名称(例如“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中计算。或者也许还有另一种方法在项目版本中使用分支目录名称?

1 个答案:

答案 0 :(得分:1)

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

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