自定义p2配置操作的工作示例

时间:2011-05-27 15:23:27

标签: eclipse p2

我正在尝试编写自定义p2配置操作,以便在安装功能时执行我自己的代码。使用installHandler for Update Manager这样做很简单,但对于p2,在网络上绝对没有关于此主题的文档,大多数时候eclispe只是默默地忽略了我(即使在日志中),也是唯一的例子{{3} }无法正常工作。

所以,如果有人可以指出我自定义配置操作的一个有效例子,那将有助于我理解整个事情。

感谢。

2 个答案:

答案 0 :(得分:10)

最后,我让它以某种方式工作:

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

一般评论:

  • 自定义接触点操作作为常规类存储在插件中。
  • 更新网站必须包含正确的artifacts.jar / content.jar(不知道原因,花了很多时间来调试它)。

答案 1 :(得分:0)

如果您想让触摸点操作有效,有两种方法,

  1. 首先安装插件,提供新的接触点操作。然后使用新的接触点操作从存储库安装内容。
  2. iu取决于新的接触点动作需要捆绑提供新的接触点动作,它完全喜欢你找到的东西。请参阅Simon Kaegi附带的example code