メインコンテンツまでスキップ

KPM Hook

このページでは、 KPM Hook の概念について説明しています。


概要

KPM Hook システムは、 KPM によるプラグインの操作( e.g. インストール、アップグレード、アンインストール)の際に、任意のコードを実行できる仕組みです。
プラグインの JAR ファイル内に, KPM Hook を受け取る実装を同梱して使用します。

KPM Hook を受け取る

下準備: KPM を依存関係に含める

KPM Hook を受け取るには、あなたのプラグインの依存関係に KPMHooks を含める必要があります。

以下のリポジトリと依存関係を 依存関係管理ツールに追加してください。

<repositories>
<repository>
<id>jitpack.io</id>
<url>https://jitpack.io</url>
</repository>
</repositories>
<dependency>
<groupId>com.github.TeamKUN.TeamKUNPluginManager</groupId>
<artifactId>KPMHooks</artifactId>
<version>{バージョン}</version>
</dependency>

ステップ1. KPM Hook を受け取るクラスを作成する

KPM Hook の受け取りには、抽象クラス KPMHookRecipient を継承したクラスを作成します。
コンストラクタは public で、 KPMRegistry(NotNull) のみを引数に取ってください。 また、 KPMRegistryのみを引数に取るスーパーコールをコンストラクタ内で行ってください。


package com.example.myplugin;

import org.kunlab.kpm.hook.KPMHookRecipient;

public class ExampleKPMHookRecipient implements KPMHookRecipient {

public ExampleKPMHookRecipient(KPMRegistry registry) {
super(registry);
}
}

ヒント

パッケージやクラス名等に規約はありませんが、他のプラグインとの衝突を避けるためにあなた固有のパッケージ名を使用することをお勧めします。

ステップ2. KPM Hook を受け取るメソッドを作成する

KPM Hook を受け取るには、 Hook と一対一で対応した public メソッドが必要です。
各メソッドには、 HookListener アノテーションを付与し、 引数にはKPMHook を実装した各 Hook オブジェクトを1のみ受け取ってください。

以下の例では、 PluginInstalledHook を受け取るメソッドを作成しています。

import org.kunlab.kpm.hook.HookListener;

public class ExampleKPMHookRecipient implements KPMHookRecipient {
public ExampleKPMHookRecipient(KPMRegistry registry) {
super(registry);
}

@HookListener
public void onPluginInstall(PluginInstalledHook hook) {
// プラグインのインストール時に呼ばれるフックです。
}
}
ヒント

こちら に含まれる全てのクラスが利用できます。 また、一部の Hook の接尾辞にある PrePost は、それぞれ対象の操作の前後に呼ばれるフックを表します。