При создании очень простого плагина PF4J мой файл extension.idx пуст.Зачем? - PullRequest
0 голосов
/ 18 февраля 2019

Я пытаюсь использовать PF4J в существующей кодовой базе.Я попытался перенести все необходимое из демонстрационных плагинов и приложений в мой существующий проект Maven.Я сравнил демо и мой код и не могу найти ничего другого.И все же, когда я собираю файл .jar моего плагина, в сгенерированном файле extensions.idx есть комментарий, в котором говорится, что он генерировал PF4J, а в остальном он пустой.Там должна быть ссылка на внутренний класс моего плагина, но это не так.В демо-плагинах есть.

Я предполагаю, что это проблема с моей установкой Maven (один из моих файлов pom), но я посмотрел и посмотрел, и не могу понять это,Вот файл Java для моего плагина:

package com.inlet.ifserver.plugin.reaper;

import com.inlet.plugin.InletFetchReaper;
import org.apache.commons.lang.StringUtils;
import org.pf4j.Extension;
import org.pf4j.Plugin;
import org.pf4j.PluginWrapper;
import org.pf4j.RuntimeMode;

/**
 * @author Decebal Suiu
 */
public class ReaperAPlugin extends Plugin {

    public ReaperAPlugin(PluginWrapper wrapper) {
        super(wrapper);
    }

    @Override
    public void start() {
        System.out.println("WelcomePlugin.start()");
        // for testing the development mode
        if (RuntimeMode.DEVELOPMENT.equals(wrapper.getRuntimeMode())) {
            System.out.println(StringUtils.upperCase("WelcomePlugin"));
        }
    }

    @Override
    public void stop() {
        System.out.println("WelcomePlugin.stop()");
    }

    @Extension
    public static class ReaperA implements InletFetchReaper {

        @Override
        public void reap() {
            System.out.println("ReaperA");
        }
    }

}

Я предполагаю, что мой код не сканируется, чтобы найти аннотацию @Extension.Я не знаю, как это работает.

Я надеюсь, что другие столкнулись с этой проблемой и знают что-то простое, что я пропустил.Может кто-нибудь сказать мне, почему это происходит?Если кто-нибудь может дать мне какое-либо представление о том, как Maven создан для создания файла extensions.idx в создаваемом им файле .jar, это может привести меня к ответу.

TIA за любую помощь!

1 Ответ

0 голосов
/ 18 февраля 2019

Я понял это.Я определил интерфейс для моего плагина так:

package com.inlet.plugin;

public interface InletFetchReaper {
    void reap();
}

, но это должно было быть (и сейчас) так:

package com.inlet.plugin;

import org.pf4j.ExtensionPoint;

public interface InletFetchReaper extends ExtensionPoint {
    void reap();
}

Я подумал, что это будет что-то простое.

...