2010-11-23 80 views
1

我目前硬編碼屬性文件中的版本號,我希望能夠以編程方式直接從RCP產品文件獲取版本號。這樣,我不需要在兩個地方指定版本號。我無法找到關於這樣做的文章。我正在使用Eclipse RCP 3.x.Eclipse RCP:如何以編程方式從產品文件中獲取版本號?

這是可行的嗎?

謝謝。

+0

這是在構建時,對不對?您是否考慮在產品文件外指定版本號,並在構建時替換產品文件中的佔位符? – 2010-11-23 22:52:35

+0

@安迪,我可以知道我該如何配置它?可以從屬性文件中讀取版本號,並在產品文件中預先填寫。謝謝。 – limc 2010-11-23 23:55:12

回答

0

您可以執行以下操作:將標記替換爲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,但總體思路也適用於其他方法。

+0

-1原始海報確實指定他想從RCP產品文件中檢索ID,而不是插件文件中的版本號。 – ianmayo 2012-10-09 05:41:26

0

不知道我完全理解你的問題,但你可以通過編程讓您的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是一個你的班級在插件中。

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");

也可以添加屬性「版本」到org.eclipse.core.runtime.products擴展名並使用此代碼:System.out.println(Platform.getProduct().getProperty("version"));

相關問題