【问题标题】:How to add a build timestamp to the title of an application built with Tycho如何在使用 Tycho 构建的应用程序的标题中添加构建时间戳
【发布时间】:2015-02-04 14:45:43
【问题描述】:

有没有办法让产品名称(显示在已启动应用程序的标题中)由 Tycho 构建设置?

目前,我的应用程序的标题是产品配置文件中设置的静态产品名称。不过,我想为该标题添加内部版本号或时间戳,以更好地区分应用程序的不同版本。

因此,我希望 My Application (<buildNr>-<date>) 具有扩展的内部版本号和日期,而不是 My Application

如果 Tycho 无法做到这一点,欢迎使用任何其他解决方案。

【问题讨论】:

  • 不确定如何在 Tycho 中执行此操作,但我们通常将版本存储在 version.properties 文件中,然后以编程方式更新应用程序标题。例如,在 ApplicationWorkbenchWindowAdvisor
  • 如果 Tycho 不能直接做到这一点,你仍然有成千上万的其他 Maven 插件可以与 Tycho 构建集成。在您的情况下,maven-resources-plugin 可能会有所帮助。

标签: maven eclipse-rcp tycho


【解决方案1】:

我不确定这是否是一个理想的解决方案,但我做了以下操作:

要正确设置应用程序标题,必须设置产品名称,因为它也用于About <productName>-menu 项,而且在调用Platform.getProduct().getName() 时会返回它。 (有时在我的旧产品中使用。)

要在构建时设置产品名称,我执行以下操作:

  1. plugin.properties 文件中读取产品名称
  2. 使用 Tycho (Maven) 修改 plugin.properties

1.从plugin.properties 文件中读取产品名称

为了更容易通过 Maven 修改产品名称,该字符串被外部化为 plugin.properties

在插件配置文件和plugin.xml中,产品名称应设置为%product.name

然后在plugin.properties 中添加以下行:

product.name=@productName@

如果你现在开始你的产品,应用标题应该是@productName@

2。使用 Tycho (Maven) 修改 plugin.properties

要将 @productName@ 更改为所需的文本,请使用 Maven filtering。如果使用标准过滤分隔符 (${productName}),Eclipse 将无法启动该产品,因此我使用 Ant 之类的分隔符。这个sn-p需要添加到pom中:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-resources-plugin</artifactId>
    <version>2.4.3</version>
    <configuration>
            <encoding>UTF-8</encoding>
            <delimiters>
                <delimiter>${*}</delimiter><!-- to keep the default behavior -->
                <delimiter>@</delimiter><!-- to add Ant-like tokens style, this is needed as RCP has problems with the accolades -->
            </delimiters>
    </configuration>
</plugin>

我找到了这个解决方案here on SO

要将 @productName@ 替换为实际值,必须在 pom 中定义 Maven 属性 &lt;productName&gt;

<properties>
    <productName>MyApp_${maven.build.timestamp}</productName>
</properties>

&lt;productName&gt; 可以包含任何值,例如${buildNumber} 来自Build Number Maven Plugin

现在唯一缺少的部分是以下激活过滤的sn-p:

<resources>
    <resource>
        <directory>./</directory>
        <includes>
            <include>plugin.properties</include>
        </includes>
        <filtering>true</filtering>
    </resource>
</resources>

【讨论】:

  • 感谢您分享您的解决方案。看起来不错 - 特别是因为您不需要在应用程序中添加任何代码。
猜你喜欢
  • 1970-01-01
  • 2011-04-29
  • 2021-08-09
  • 2021-10-25
  • 1970-01-01
  • 2015-11-28
  • 2011-06-18
  • 1970-01-01
  • 2012-06-04
相关资源
最近更新 更多