如何将构建时间戳添加到使用Tycho构建的应用程序的标题

时间:2015-02-04 14:45:43

标签: maven eclipse-rcp tycho

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

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

因此,我希望My Application代替My Application (<buildNr>-<date>),其内部版本号和日期已展开。

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

1 个答案:

答案 0 :(得分:3)

我不确定它是否是理想的解决方案,但我做了以下事情:

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

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

  1. plugin.properties文件
  2. 中读取产品名称
  3. 使用Tycho(Maven)修改plugin.properties
  4. <强> 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作为分隔符。需要将此代码段添加到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属性<productName>

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

    <productName>可以包含任何值,例如来自Build Number Maven Plugin${buildNumber}

    现在唯一缺少的部分是以下代码片段,它会激活过滤:

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