Рабочий пример настраиваемого действия по обеспечению p2 - PullRequest
9 голосов
/ 27 мая 2011

Я пытаюсь написать настраиваемое действие подготовки p2 для выполнения собственного кода при установке функции. Сделать это с помощью InstallHandler для Update Manager было легко, но что касается p2, в Интернете нет абсолютно никаких документов по этой теме, большую часть времени eclispe просто молча игнорирует меня (даже в журнале), и единственный пример I не работает.

Итак, если кто-то может указать мне на рабочий пример настраиваемого действия по обеспечению, это поможет мне понять все это.

Спасибо.

Ответы [ 2 ]

10 голосов
/ 30 мая 2011

Наконец-то у меня все работает как-то:

example_plugin:

plugin.xml :

<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.5"?>
<plugin>
  <extension point="org.eclipse.equinox.p2.engine.touchpoints" id="example" name="Eclipse Touchpoint">
    <touchpoint type="com.company.example.plugin" class="org.eclipse.equinox.internal.p2.touchpoint.eclipse.EclipseTouchpoint" version="1.0"/>
  </extension>

  <extension point="org.eclipse.equinox.p2.engine.actions">
    <action
      class="com.company.example.plugin.CustomAction"
      name="do_custom_action"
      touchpointType="com.company.example.plugin"
      touchpointVersion="1.0"          
      version="1.0">
    </action>
  </extension>
</plugin>

META-INF \ p2.xml :

provides.0.namespace=com.company.example.plugin
provides.0.name=do_custom_action
provides.0.version=1.0

example_feature:

feature.xml :

<?xml version="1.0" encoding="UTF-8"?>
<feature id="com.company.example.feature" label="Maven installer feature" version="2.2.1.qualifier">
  <description url="http://www.example.com/description">[Enter Feature Description here.]</description>
  <copyright url="http://www.example.com/copyright">[Enter Copyright Description here.]</copyright>
  <license url="http://www.example.com/license">[Enter License Description here.]</license>

 <requires>
   <import plugin="com.company.example.plugin"/>
 </requires>

 <plugin
   id="com.company.example.plugin"
   download-size="0"
   install-size="0"
   version="0.0.0"
   unpack="false"/>
</feature>

p2.inf :

metaRequirements.0.namespace=com.company.example.plugin
metaRequirements.0.name=do_custom_action
metaRequirements.0.range=1.0

instructions.configure = com.company.example.plugin.do_custom_action();

Общие комментарии:

  • Пользовательское действие Touchpoint сохраняется в плагине как обычный класс.
  • Обновление сайта должен содержать правильный artifacts.jar / content.jar (не знаю почему, потребовалось много времени для его отладки).
0 голосов
/ 30 мая 2011

Если вы хотите, чтобы ваше действие в точке касания работало, есть два подхода:

  1. сначала установите плагин, который обеспечивает новое действие в точке касания.Затем установите содержимое из репозитория, используя новое действие Touchpoint.
  2. Если в зависимости от нового действия Touchpoint необходимо, чтобы пакет предоставлял новое действие Touchpoint, ему точно нравится то, что вы нашли.Смотрите пример кода , приложенный Симоном Каеги
...