KPM Hook
このページでは、 KPM Hook の概念について説明しています。
概要
KPM Hook システムは、 KPM によるプラグインの操作( e.g. インストール、アップグレード、アンインストール)の際に、任意のコードを実行できる仕組みです。
プラグインの JAR ファイル内に, KPM Hook を受け取る実装を同梱して使用します。
KPM Hook を受け取る
下準備: KPM を依存関係に含める
KPM Hook を受け取るには、あなたのプラグインの依存関係に KPMHooks を含める必要があります。
以下のリポジトリと依存関係を 依存関係管理ツールに追加してください。
- Maven
- Gradle
- SBT
- Leiningen
<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>
allprojects {
repositories {
...
maven {" url 'https://jitpack.io' }
}
}
dependencies {
implementation 'com.github.TeamKUN.TeamKUNPluginManager:KPMHooks:{バージョン}'
}
resolvers += "jitpack" at "https://jitpack.io"
libraryDependencies += "com.github.TeamKUN.TeamKUNPluginManager" % "KPMHooks" % "{バージョン}"
:repositories [["jitpack" "https://jitpack.io"]]
:dependencies [[com.github.TeamKUN.TeamKUNPluginManager/KPMHooks "{バージョン}]]
ステップ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 の接尾辞にある Pre
と Post
は、それぞれ対象の操作の前後に呼ばれるフックを表します。