Eclipse RCP: Как программно получить номер версии из файла продукта? - PullRequest
1 голос
/ 24 ноября 2010

В настоящее время я жестко кодирую номер версии в файле свойств, и я надеюсь, что смогу программно получить номер версии непосредственно из файла продукта RCP.Таким образом, мне не нужно указывать номер версии в двух местах.Я не могу найти статьи об этом.Я использую Eclipse RCP 3.x.

Это выполнимо?

Спасибо.

Ответы [ 3 ]

1 голос
/ 04 июня 2016

Номер версии из файла продукта является версией файла продукта.Если вы хотите получить версию продукта, вы должны установить версию в 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");

Или вы можете добавить свойство "version" в расширение org.eclipse.core.runtime.products и использовать этот код: System.out.println(Platform.getProduct().getProperty("version"));

0 голосов
/ 08 января 2016

Не уверен, что я полностью понимаю вашу проблему (какой файл свойств?), Но вы можете программно получить версию своего пакета 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 является одним из ваших классов в плагине.

0 голосов
/ 27 ноября 2010

Вы можете сделать следующее: Поместить тег, который будет заменен номером сборки (например, $ 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>

Это заменит токен $ DEVELOPER $ в файле plugin.xml содержимым свойства "buildtag".

Все это предполагает, что вы строите с помощью PDE, но общая идея применима и к другим методам.

...