1. 程式人生 > >pf4j實例 插件框架

pf4j實例 插件框架

out () import npoi div -- -1 nds 1.2

實現整個過程需要三個部分,第一就是根接口,第二是插件,第三是應用程序。這是3個java項目。

首先要下載jar包,百度搜索maven repository,然後搜索pf4j,如下圖,下載第一個的相應版本就可以,我用的是1.2

技術分享

然後,創建根節點項目,

package com.wgn.test1;

import ro.fortsoft.pf4j.ExtensionPoint;

/*
 * 根接口,繼承ExtensionPoint
 * 將該項目打成jar包,放到plugin項目的lib文件夾下,然後構建配置路徑
 */
public interface Testpf4j extends ExtensionPoint {
    
public void hello(); }

技術分享

第三,創建插件項目,並將根接口項目打成jar包,放到插件項目的lib目錄下,構建路徑

package com.wgn.test2;

import com.wgn.test1.Testpf4j;

import ro.fortsoft.pf4j.Extension;
import ro.fortsoft.pf4j.Plugin;
import ro.fortsoft.pf4j.PluginWrapper;

public class Testpf4jImpl extends Plugin {

    public Testpf4jImpl(PluginWrapper wrapper) {
        
super(wrapper); } @Override public void start() { System.out.println("----------------------start"); } @Override public void stop() { System.out.println("----------------------stop"); } /* * 必須添加static修飾符 */ @Extension public
static class Testpf4jImpls implements Testpf4j { @Override public void hello() { System.out.println("hello world!"); } } }

技術分享

MANIFEST.MF:

Manifest-Version: 1.0
Plugin_Dependencies: 
Implementation-Title: Demo Plugin #2
Implementation-Version: 1.2.0
Archiver-Version: Plexus Archiver
Built-By: root
Specification_Title: Demo Plugin #2
Implementation-Vendor-Id: com.wgn.test1.Testpf4j
Plugin-Version: 0.0.1
Plugin-Id: plugin01
Plugin-Provider: Decebal Suiu
Plugin-Class: com.wgn.test2.TestPf4jImpl
Build-dk: 1.8.0_102
Specification-Version; 1.2.0

extensions.idx:

com.wgn.test2.Testpf4jImpl$Testpf4jImpls

最後,新建程序項目,將插件放入plugins目錄下,根接口放入lib目錄下

技術分享

package com.wgn.test2;

import com.wgn.test1.Testpf4j;

import ro.fortsoft.pf4j.Extension;
import ro.fortsoft.pf4j.Plugin;
import ro.fortsoft.pf4j.PluginWrapper;

public class Testpf4jImpl extends Plugin {

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

    @Override
    public void start() {
        System.out.println("----------------------start");
    }
    
    @Override
    public void stop() {
        System.out.println("----------------------stop");
    }
    
    /*
     * 必須添加static修飾符
     */
    @Extension
    public static class Testpf4jImpls implements Testpf4j {

        @Override
        public void hello() {
            System.out.println("hello world!");
        }
        
    }
}

pf4j實例 插件框架