我正在尝试在现有代码库中使用 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 文件的,那可能会让我得到答案。
TIA 寻求帮助!