我目前硬編碼屬性文件中的版本號,我希望能夠以編程方式直接從RCP產品文件獲取版本號。這樣,我不需要在兩個地方指定版本號。我無法找到關於這樣做的文章。我正在使用Eclipse RCP 3.x.Eclipse RCP:如何以編程方式從產品文件中獲取版本號?
這是可行的嗎?
謝謝。
我目前硬編碼屬性文件中的版本號,我希望能夠以編程方式直接從RCP產品文件獲取版本號。這樣,我不需要在兩個地方指定版本號。我無法找到關於這樣做的文章。我正在使用Eclipse RCP 3.x.Eclipse RCP:如何以編程方式從產品文件中獲取版本號?
這是可行的嗎?
謝謝。
您可以執行以下操作:將標記替換爲buildnumber(例如$ DEVLEOPER $)到plugin.xml中,無論您需要版本號。
在你的build.properties文件,用customBuildCallbacks標籤,該標籤文件將包含構建回調,將做定製註明:
customBuildCallbacks = buildCustomization.xml
文件buildCustomization.xml將包含以下內容:
<?xml version="1.0"?>
<project name="product_customization" default="[email protected]">
<target name="[email protected]" 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,但總體思路也適用於其他方法。
-1原始海報確實指定他想從RCP產品文件中檢索ID,而不是插件文件中的版本號。 – ianmayo 2012-10-09 05:41:26
不知道我完全理解你的問題,但你可以通過編程讓您的OSGi包(即「插件版本」)的這樣的版本(什麼屬性文件?):
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
是一個你的班級在插件中。
產品文件中的版本號是產品文件的版本。如果你想獲得產品的版本,則必須在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"));
這是在構建時,對不對?您是否考慮在產品文件外指定版本號,並在構建時替換產品文件中的佔位符? – 2010-11-23 22:52:35
@安迪,我可以知道我該如何配置它?可以從屬性文件中讀取版本號,並在產品文件中預先填寫。謝謝。 – limc 2010-11-23 23:55:12