如何在about对话框中添加构建ID,

时间:2014-05-07 09:10:47

标签: java eclipse eclipse-plugin eclipse-rcp eclipse-kepler

我正在研究RCP应用程序。我正在使用tycho来构建产品。

我想添加关于Dialog的内容,目前我是通过编辑品牌标签下的产品文件手动编写的。

在about对话框中是否还有其他方法可以为我的应用程序添加构建ID。

enter image description here

2 个答案:

答案 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.xmlfeature.xml.productpom.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)