我目前在属性文件中对版本号进行了硬编码,我希望能够以编程方式直接从RCP产品文件中获取版本号。这样,我不需要在两个地方指定版本号。我无法找到有关这样做的文章。我正在使用Eclipse RCP 3.x。
这可行吗?
感谢。
答案 0 :(得分:1)
产品文件中的版本号是产品文件的版本。如果您想获得产品版本,则必须在plugin.xml中设置版本,然后您可以尝试以下变体:
String version = Display.getAppVersion().toString();
String version = Platform.getProduct().getDefiningBundle().getVersion().toString();
String version = Platform.getProduct().getDefiningBundle().getHeaders().get("Bundle-Version");
或者你可以添加属性"版本"到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
是插件中的一个类。