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

时间:2010-11-23 21:23:54

标签: eclipse-rcp

我目前在属性文件中对版本号进行了硬编码,我希望能够以编程方式直接从RCP产品文件中获取版本号。这样,我不需要在两个地方指定版本号。我无法找到有关这样做的文章。我正在使用Eclipse RCP 3.x。

这可行吗?

感谢。

3 个答案:

答案 0 :(得分:1)

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

  1. String version = Display.getAppVersion().toString();
  2. String version = Platform.getProduct().getDefiningBundle().getVersion().toString();
  3. String version = Platform.getProduct().getDefiningBundle().getHeaders().get("Bundle-Version");
  4. 或者你可以添加属性"版本"到org.eclipse.core.runtime.products扩展并使用以下代码:System.out.println(Platform.getProduct().getProperty("version"));

答案 1 :(得分:0)

您可以执行以下操作:将要替换为buildnumber的标记(例如$ DEVLEOPER $)放入plugin.xml中,无论您需要版本号。

在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,但一般的想法也适用于其他方法。

答案 2 :(得分:0)

我不确定我完全理解您的问题(属性文件是什么?),但您可以编程方式获取osgi包的版本(即&#34;插件版本&#34;),如下所示:

import org.osgi.framework.FrameworkUtil; 
import org.osgi.framework.Version; 

Version v = FrameworkUtil.getBundle(SomeClass.class).getVersion(); 
String version = String.format("Version %d.%d.%d", v.getMajor(), v.getMinor(), v.getMicro());

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