有问题请联系管理员stephenking@fanruan.com

Page tree
Skip to end of metadata
Go to start of metadata

核心目标:知道plugin.xml中包含哪些元素,了解常用元素的基本含义

学习时间:10分钟

 

首先我们从最简单的开始。我们先看一下插件里面的plugin.xml这个文件。(先不要管插件的全貌,我们先看一些简单的局部)

 

这是一篇不会让你有什么成就感的教程,也是一篇极其枯燥的教程,不过如果你是一个刚刚接触FR插件的开发者,请保持你的耐心

 

plugin.xml的作用是啥呢:其实它就是插件的简历,它的作用就是告诉服务器/设计器  “我是谁,我能干嘛”,然后等服务器/设计器  给它分配工作。

 

我们先看一下下面这个例子。我们先不管它如何生效的,先看看他都给我们提供了一些什么可以编辑的内容

<?xml version="1.0" encoding="UTF-8" standalone="no"?><plugin>
    <id>com.fr.plugin.myfunction.id</id>
    <name><![CDATA[ 插件标题 ]]></name>
    <active>yes</active>
    <version>1.0</version>
    <env-version>10.0~10.0</env-version>
    <vendor>插件的开发者</vendor>
    <jartime>2018-11-01</jartime>
    <description><![CDATA[ 插件的简单描述 ]]></description>
    <change-notes><![CDATA[ 插件的更新日志 ]]></change-notes>
	<main-package>com.fr.plugin.myfunction</main-package>
    <function-recorder class="com.fr.plugin.myfunction.Demo"/>
    <extra-decision>
        <GlobalRequestFilterProvider class="com.fr.plugin.myfunction.Demo"/>
    </extra-decision>
</plugin>

 

上面是一个插件描述的例子,我们可以把它分作两个部分来看,第一个部分就是 “我是谁"

	<id>com.fr.plugin.myfunction.id</id>
    <name><![CDATA[ 插件标题 ]]></name>
    <active>yes</active>
    <version>1.0</version>
    <env-version>10.0~10.0</env-version>
    <vendor>插件的开发者</vendor>
    <jartime>2018-11-01</jartime>
    <description><![CDATA[ 插件的简单描述 ]]></description>
    <change-notes><![CDATA[ 插件的更新日志 ]]></change-notes>
	<main-package>com.fr.plugin.myfunction</main-package>
    <function-recorder class="com.fr.plugin.myfunction.Demo"/>

id:插件的唯一标识,等同于我们的身份证号

name:插件的名字,等同于我们每个人的姓名

active:yes/no  告诉服务器这个插件当前是否是激活状态(激活的插件不一定可用,但是可用的插件一定是激活的)

version:插件本身的版本号

env-version:插件能作用的FR的大版本,两种写法 第一种 8.0 表示支持8.0及以上版本; 第二种 9.0~10.0 表示支持9.0到10.0

vendor:插件的开发者 支持属性 email

jartime:该插件支持的最早的产品JAR包日期,也就是你如果要使用这个插件,必须使用这个时间点之后的产品JAR才行

description:插件的简介

change-notes:插件的更新日志

main-package:插件的主包路径(PS:具体有啥作用你可以先不用管,只要知道有这么个东西就行,后面的教程中会单独做详细的说明)

function-recorder:插件的功能点记录(PS:这个你也可以先不用管是啥,反正就知道有这么一个东西就可以了)

 

第二部分是功能标记,也就是”我能做啥“

	<extra-decision>
        <GlobalRequestFilterProvider class="com.fr.plugin.myfunction.Demo"/>
    </extra-decision>

 

首先是接口功能声明:<GlobalRequestFilterProvider class="com.fr.plugin.myfunction.Demo"/>

基本结构为 <接口的XML标签 class="类名"  />。当然某些特殊接口会支持一些其他属性和子接口元素,这些我们先不用去管,先从一般开始即可

每一个接口的XML标签是啥,我们现在也不需要去管,后面会单独介绍

 

然后因为FR是分模块的,所以我们的接口功能需要申明到对应的模块注册标签内。模块的XML标签为: extra-模块 构成 。

 

同一个插件内可以申明多个模块的接口,同一个模块标签下也可以申明多个接口功能。

至于有多少个模块我们暂时也不需要去了解,只要知道这个xml是如何申明我们的功能的即可

 

到这里我们第一堂课的内容其实就结束了(其实还有一些特殊的配置,不过一般用得不多,等后续遇到了我们会单独介绍)。

10分钟内看完的请重新仔细阅读,以确保你对每一个配置都清楚。当然如果你之前已经非常清楚描述文件的结构,可以看下一篇了。


  • No labels
Write a comment…