【问题标题】:How to get the current build version in Maven/Tycho如何在 Maven/Tycho 中获取当前的构建版本
【发布时间】:2016-02-20 19:23:53
【问题描述】:

我读到应该使用${project.version} 属性来获取项目的完整版

但是,如果我在构建中使用此属性将当前构建的版本传递给外部构建过程,它的值总是1.0.0-SNAPSHOT,我需要类似1.0.0-20160220-1234 的东西。调用外部构建步骤的阶段是“包”。

tycho-packaging-plugin 被配置为生成如下时间戳:

<configuration>
  <format>yyyyMMdd-HHmm</format>
</configuration>

生成的工件在版本/名称中确实有时间戳

我将 Maven 3.3.3 与 Eclipse Tycho 0.24 一起使用,但是,对于 Tycho 的早期版本,行为是相同的。不确定 Tycho 在这方面的行为是否与普通 Maven 不同。

构建运行于

mvn clean verify

在主 pom 的目录中。

我使用它的实际项目是Extras for Eclipse。调用外部构建步骤in line 129 of the 'repository' child pom

我在上面提到的child pom中也使用了echo插件来诊断问题是这样的:

<plugin>
  <groupId>com.soebes.maven.plugins</groupId>
  <artifactId>maven-echo-plugin</artifactId>
  <version>0.1</version>
  <executions>
    <execution>
      <phase>package</phase>
      <goals>
        <goal>echo</goal>
      </goals>
    </execution>
  </executions>
  <configuration>
    <echos>
      <echo>actual version: ${project.version}</echo>
    </echos>
  </configuration>
</plugin>

输出与外部构建收到的相同:1.0.0-SNAPSHOT

我需要做什么或使用哪个属性来获取当前构建的合格版本?

【问题讨论】:

  • 你能说明你是怎么做的吗?通过命令行?您使用哪个 Maven 版本?您使用哪个第谷版本?你能展示一个不起作用的示例项目吗?
  • 感谢您的反馈,请查看更新后的问题。

标签: maven tycho


【解决方案1】:

据我了解,${project.version} 属性应包含合格版本,例如1.0.0-20160218-1234。但要么 Maven/Tycho 中存在错误,要么我的理解完全错误。如果有人能澄清这一点,我会很高兴。

但是,我找到了由 tycho-packaging:build-qualifier mojo 设置的 ${qualifiedVersion} 属性。该属性持有预期值。

请注意,即使文档说明

分配给项目属性qualifiedVersion

无法通过${project.qualifiedVersion} 访问该属性。它需要被引用为${qualifiedVersion}

【讨论】:

  • 问:据我了解 ${project.version} 属性应该包含合格的版本,例如1.0.0-20160218-1234 ... A:我不这么认为。 ${project.version} 是在 pom 模型中解析的版本,因此它是包含 -SNAPSHOT 的版本。稍后将其解析为更具体的内容,正如您所注意到的那样,然后将其注入 ${qualifiedVersion} 属性中。但是与模型的初始值相比,${project.version} 没有(也不应该按照 Maven 规则)修改。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-02-01
  • 2020-01-08
  • 2015-03-07
  • 2020-12-13
  • 2018-02-12
  • 2014-01-27
  • 1970-01-01
相关资源
最近更新 更多