在构建一个非常简单的 PF4J 插件时,我的 extension.idx 文件是空的。为什么?

我正在尝试在现有代码库中使用 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 是如何在它生成的 .jar 文件中创建 extensions.idx 文件的,那可能会让我得到答案。


浮云间
浏览 368回答 3
3回答

慕沐林林

我想通了。我为我的插件定义了这样的接口:package com.inlet.plugin;public interface InletFetchReaper {    void reap();}但它应该是(现在是)这个:package com.inlet.plugin;import org.pf4j.ExtensionPoint;public interface InletFetchReaper extends ExtensionPoint {    void reap();}认为这将是一些简单的事情。

泛舟湖上清波郎朗

在我的情况下,我忘记将插件 API 上的 Maven 依赖项标记为<scope>provided</scope>.

慕尼黑的夜晚无繁华

我代表 Decebal 发布此答案:请创建一个问题作为功能请求。我认为这将有助于检查 PF4J。例如,您将扩展声明为:@Extensionpublic static class ReaperA implements InletFetchReaper {}我认为如果注释处理器通过反射验证InletFetchReaper(您的扩展实现的单个接口)扩展,这将很有用ExtensionPoint。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java