背景
通常,关于对话框中的文本需要显示版本号,同时也可以显示一个日期格式的build id用以表明构建的时间。在RCP中,aboutText通常是在plugin.xml中的product扩展中定义,可以直接在plugin.xml中定义也可以通过外部国际化文件来定义,无论哪种方式,每次升级都要手动修改这两个值,有时候好不容易构建完成了,才想起来没有修改build id,比较繁琐。
按照本文中介绍的方式,就可以很简单的实现自动生成版本号和build id。
本文中介绍的实现方式需要使用tycho构建RCP时才会生效。
实现方式
如果没有特殊说明,下述步骤均在brand插件中操作,通常brand插件就是application所在的插件。
- 在插件的plugin.xml中定义一个product扩展,并在product扩展定义一个“aboutText”属性,值设为“%productBlurb”(值不是必须是这个,可以自定义)。这里使用外部国际化配置文件的方式来定义这个aboutText的值。
如果已定义该扩展,忽略该步骤。
<extension
id="product"
point="org.eclipse.core.runtime.products">
<product
application="com.ming.xxx.application.application"
description="%product"
name="%productName">
<property
name="aboutImage"
value="product_logo.png">
</property>
<property
name="aboutText"
value="%productBlurb">
</property>
</product>
- 在插件根目录下创建一个properties文件,命名为“plugin.properties”。
如果已存在该文件,忽略该步骤 - 在插件的MANIFEST.MF文件中,加入下面这一行,这将使Eclipse在加载该插件时,如果遇到“%”开始的值,可以去“plugin.properties”文件中加载实际的值。
Bundle-Localization: plugin
- 打开第2步创建的plugin.properties文件,加入“productBlurb”变量的值定义。
productBlurb=Your RCP Platform\n\
\n\
Version: {0}\n\
Build id: {1}\n\
\n\
(c) Copyright Eclipse contributors and others 2000, 2020. \
..... your thing\n
- 在插件根目录下创建一个“about.mappings”文件,加入以下行,这些行是对plugin.properties文件中使用的变量的定义。
同样,该文件中的变量的值也是变量,这些变量将在tycho编译时被替换。
0=${productVersion}
1=${buildId}
- 现在打开插件的pom.xml文件,在其中加入以下内容:
其中,properties
中定义的两个变量就是上面about.mappings中使用的变量,unqualifiedVersion
和buildQualifier
是tycho的内置变量,是指代每个插件的除去qulifier之后的版本号和生成的qualifier号。如果想获得插件构建完成后的完整版本号,可以使用变量qualifiedVersion
。
<properties>
<productVersion>${unqualifiedVersion}</productVersion>
<buildId>${buildQualifier}</buildId>
</properties>
<build>
<resources>
<resource>
<directory>.</directory>
<includes>
<include>about.mappings</include>
</includes>
<filtering>true</filtering>
</resource>
</resources>
</build>
- 重新编译构建整个product吧。