Eclipse rcp EclipseRCP:如何以编程方式从产品文件中获取版本号?

Eclipse rcp EclipseRCP:如何以编程方式从产品文件中获取版本号?,eclipse-rcp,Eclipse Rcp,我目前在属性文件中硬编码版本号,我希望能够通过编程直接从RCP产品文件中获取版本号。这样,我不需要在两个地方指定版本号。我找不到关于这样做的文章。我正在使用EclipseRCP3.x 这可行吗 谢谢。您可以执行以下操作:在plugin.xml中放置一个将被buildnumber(例如$DEVLEOPER$)替换的标记,无论您在哪里需要版本号 在build.properties文件中,使用customBuildCallbacks标记指定哪个文件将包含进行自定义的生成回调: customBuildC

我目前在属性文件中硬编码版本号,我希望能够通过编程直接从RCP产品文件中获取版本号。这样,我不需要在两个地方指定版本号。我找不到关于这样做的文章。我正在使用EclipseRCP3.x

这可行吗


谢谢。

您可以执行以下操作:在plugin.xml中放置一个将被buildnumber(例如$DEVLEOPER$)替换的标记,无论您在哪里需要版本号

在build.properties文件中,使用customBuildCallbacks标记指定哪个文件将包含进行自定义的生成回调:

customBuildCallbacks = buildCustomization.xml
文件buildCustomization.xml将包含以下内容:

 <?xml version="1.0"?>

<project name="product_customization" default="pre.@dot">
    <target name="pre.@dot" if="buildtag" description="Patch buildtag (if it exists) into plugin.xml">
        <replace file="plugin.xml" token="$DEVELOPER$" value="${buildtag}" />
    </target>
</project>

这将用“buildtag”属性的内容替换plugin.xml文件中的$DEVELOPER$标记


所有这些都是假设您使用PDE进行构建,但总体思路也适用于其他方法。

我不确定我是否完全理解您的问题(什么属性文件?),但您可以通过编程获得osgi捆绑包的版本(即“插件版本”),如下所示:

import org.osgi.FrameworkUtil;
导入org.osgi.framework.Version;
Version v=FrameworkUtil.getBundle(SomeClass.class.getVersion();
String version=String.format(“版本%d.%d.%d”,v.getMajor(),v.getMinor(),v.getMicro());

其中
SomeClass
是插件中的一个类。

产品文件的版本号是产品文件的版本号。如果要获取产品的版本,必须在plugin.xml中设置版本,然后可以尝试以下变体:

  • String version=Display.getAppVersion().toString()
  • String version=Platform.getProduct().getDefiningBundle().getVersion().toString()
  • String version=Platform.getProduct().getDefiningBundle().getHeaders().get(“Bundle version”)

  • 或者您可以将属性“version”添加到org.eclipse.core.runtime.products扩展中,并使用以下代码:
    System.out.println(Platform.getProduct().getProperty(“version”)

    这是在构建时,对吗?您是否考虑过在产品文件外指定版本号,并在生成时替换产品文件中的占位符?@Andy,我可以知道如何准确配置它吗?最好能从属性文件中读取版本号,并在产品文件中进行预填充。谢谢。-1原始海报确实指定他要从RCP产品文件中检索ID,而不是插件文件中的版本号。所有这些都不会返回产品版本。对我来说,2。三,。返回品牌插件的版本。