有没有办法让Tycho构建的产品名称显示在已启动应用程序的标题中?
目前,我的应用程序的标题是产品配置文件中设置的静态产品名称。但是,我想为该标题添加内部版本号或时间戳,以便更好地区分应用程序的不同版本。
因此,我希望My Application
代替My Application (<buildNr>-<date>)
,其内部版本号和日期已展开。
如果Tycho无法做到这一点,欢迎任何其他解决方案。
答案 0 :(得分:3)
我不确定它是否是理想的解决方案,但我做了以下事情:
要正确设置应用程序标题,必须设置产品名称,因为它也会在About <productName>
- 菜单项中使用,此外,在调用Platform.getProduct().getName()
时会返回该名称。 (我的旧产品有时使用它。)
要在构建时设置产品名称,请执行以下操作:
plugin.properties
文件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作为分隔符。需要将此代码段添加到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>