我正在研究RCP应用程序。我正在使用tycho来构建产品。
我想添加关于Dialog的内容,目前我是通过编辑品牌标签下的产品文件手动编写的。
在about对话框中是否还有其他方法可以为我的应用程序添加构建ID。
答案 0 :(得分:1)
我认为没有直接的可能性,你需要提出一些解决方法。我将描述一个想法,我们如何在我们的项目中做到这一点。
首先,您可以将当前发布的版本存储在属性文件中,具有以下内容:
version=${version.major}.${version.minor}.${version.service}.${version.build}
version.major=1
version.minor=0
version.service=0
version.build=0000
然后我们有一个ANT构建脚本,负责更新版本。它增加了每个新构建的服务版本(构建版本由Hudson设置):
<target name="-setVersion" if="version.build">
<propertyfile file="${version.file}">
<entry key="version.build" value="${version.build}" />
<entry key="version.service" type="int" operation="+" value="1" default="0" />
</propertyfile>
</target>
拥有新版本,您现在可以使用基于xml的文件进行操作,例如plugin.xml
,feature.xml
,.product
,pom.xml
(对于poms,当然还有版本插件)应用xslt转换:
<target name="setVersionOfProduct">
<property name="project.name" value="com.myrcp.project" />
<property name="product.config" value="myrcp.product" />
<if>
<and>
<available file="${workspace}/${project.name}/${product.config}" />
</and>
<then>
<echo message="Set version of product to ${version}" />
<xslt in="${workspace}/${project.name}/${product.config}" out="${workspace}/${project.name}/${product.config}.tmp" style="../pdeBuild/productVersion.xsl">
<param name="version" expression="${version}" />
</xslt>
<move overwrite="true" file="${workspace}/${project.name}/${product.config}.tmp" tofile="${workspace}/${project.name}/${product.config}" />
</then>
</if>
</target>
最后productVersion.xsl
档案:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:param name="version" />
<xsl:output method="xml" indent="yes" encoding="UTF-8" />
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()" />
</xsl:copy>
</xsl:template>
<xsl:template match="/product/@version">
<xsl:attribute name="version"><xsl:value-of select="$version" /></xsl:attribute>
</xsl:template>
</xsl:stylesheet>
同样的想法适用于所有插件和功能。之后你可以运行tyco来构建工件。
另一种选择是将版本保留在属性文件中,如前所述,并通过执行ANT任务更新它,但是直接从该文件以编程方式读取版本属性。如果您有自己的对话框,可以采用与here所述相同的方式实现。
或者,如果您使用aboutText
属性通过extension point定义了关于对话框内容。您可以尝试从属性文件中读取版本属性,方法与通常使用%property_key
样式的方式相同。虽然我不确定它是否会起作用。
答案 1 :(得分:1)