如何在 Maven/Tycho 中获取当前构建版本

How to get the current build version in Maven/Tycho

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

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

tycho-packaging-plugin 配置为生成这样的时间戳:

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

并且生成的工件在 versions/names

中确实有时间戳

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

版本是 运行 和

mvn clean verify

在master pom的目​​录下。

我使用它的实际项目是 Extras for Eclipse. The external build step is invoked in line 129 of the 'repository' child pom

我也用过上述子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

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

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

然而,我发现 ${qualifiedVersion} 属性 是由 tycho-packaging:build-qualifier mojo 设置的。这个 属性 持有期望值。

请注意,即使文档说明

is assigned to the project property qualifiedVersion

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