Eclipse RCP: Как программно получить номер версии из файла продукта?

55
7

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


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


Спасибо.

спросил(а) 2010-11-24T00:23:00+03:00 9 лет, 7 месяцев назад
1
Решение
108

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


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


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

ответил(а) 2010-11-27T13:07:00+03:00 9 лет, 7 месяцев назад
55

Номер версии из файла продукта - это версия файла продукта. Если вы хотите получить версию продукта, вы должны установить версию в plugin.xml, вы можете попробовать следующие варианты:


    String version = Display.getAppVersion().toString();
    String version = Platform.getProduct().getDefiningBundle().getVersion().toString();
    String version = Platform.getProduct().getDefiningBundle().getHeaders().get("Bundle-Version");

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

ответил(а) 2016-06-04T14:29:00+03:00 4 года, 1 месяц назад
39

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

ответил(а) 2016-01-08T21:35:00+03:00 4 года, 6 месяцев назад
Ваш ответ
Введите минимум 50 символов
Чтобы , пожалуйста,
Выберите тему жалобы:

Другая проблема