9

機能のインストール時に独自のコードを実行するカスタム p2 プロビジョニング アクションを作成しようとしています。Update Manager の installHandler を使用してこれを行うのは簡単でしたが、p2 に関しては、Web にはこのトピックに関するドキュメントはまったくありません。ほとんどの場合、eclispe は (ログであっても) 黙って私を無視し、私が見つけた唯一の例です。動かない。

したがって、誰かがカスタム プロビジョニング アクションの実例を教えてくれれば、全体を理解するのに役立ちます。

ありがとう。

4

2 に答える 2

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が含まれている必要があります(理由はわかりませんが、これをデバッグするのに多くの時間がかかりました)。
于 2011-05-30T18:32:35.083 に答える
0

タッチポイント アクションを機能させたい場合は、2 つの方法があります。

  1. 新しいタッチポイント アクションを提供するプラグインを最初にインストールします。次に、新しいタッチポイント アクションを使用してリポジトリからコンテンツをインストールします。
  2. 新しいタッチポイント アクションの必要性に応じた iu には、バンドルが新しいタッチポイント アクションを提供する必要があります。Simon Kaegi によって添付されたサンプル コードを参照してください。
于 2011-05-30T06:56:25.883 に答える