亲们,最近是不是看到传说哥发了很多插件开发招标,但想做又找不到方向?或者做到一半又各种坑?现在,我亲自经历的坑点教程来啦~~~大家一起来拍砖~~不对,一起来撒花~~,废话不多说,下面都是坑。。
一 开发环境搭建和Debug
开发工具:Intellij IDE v15 (本来想用eclipse的,但我按传说哥的那个eclipse搭建教程实在不行,所以还是用这个吧)
JDK: 1.8 (JDK怎么装这个就不要写了吧,自己度娘去)
安装好后,首先去把源码clone下来。在这里要说一下,论坛里也有教程是教大家直接新建一个插件的工程,然后再引用fineReport的核心包。这样也行,但个人觉得还是看一下源码比较好,这样对我们理解fineReport的类结构和实现逻辑有很大帮助;其次,FR的API说明文档真的很坑爹啊,说明简单到简直是惜字如金啊,看了没有看一个样啊(要变身咆哮哥的节奏~~)。所以,还是看一下源码吧~
源码的下载(点击这里)跟配置方法看这个链接(点击这里)。注意:这里有两个坑!!
1.进行到上面教程的第四步的时候,也就是配置好class输出路径的时候,你会发现有一大堆红点!!
没错,聪明的你发现有个setup sdk,这里是要设置java的JDK。大胆点击进去,你就会弹出一个框让你选择JDK安装路径(我的是C:\Program Files\Java\jdk1.8.0_66)。选择后就会发现红点都消失啦。
2.上面教程的第12步,要在plugins文件夹里再新建一个文件夹保存plugin.xml,一定要新建一个文件夹,新建一个文件夹,新建一个文件夹(重要事情说三次),一个插件一个文件夹,不是直接把plugins放在里面,这样是不行的。
好了,上面的教程你通过而且没有任何问题的话,你可以入手开发了。这时候你可能想骂娘了,TMD这源码我看都看不懂啊,那个组件的代码在哪里都不知道,开发条毛线啊(摔~)!!!不急,大神们早就想到你们这小样,已经给了查找目标组件代码的解决方法(点击这里),而且也给了很多现成的插件源码例子(点击这里),可以找一些跟你开发相关的插件来看(TMD一大堆我怎么知道那个是我需要的啊~~这,你调戏传说哥去吧,他应该知道(传说哥别拿板砖拍我啊~~))。
二 插件工程及配置文件分析
1.plugin.xml文件配置
经过上面的行动,你已经有信心开始入手开发了,这时候我们开始新建一个插件Module,配置plugin.xml文件,配置文件的各个节点意义可以看这里。
可能有哥们说,看完我不知道有什么用。呵呵,我不会笑你的,因为我看完了也不知道。所以我加了下面两个图作对比:
图1是我本地的plugin配置文件,图2是安装这个插件后显示的信息,可以很清楚的看到,在changenote之前的定义的元素就是用来显示安装后的信息,<extra-core>,<extra-report>,<extra-designer>
这三个才是我们插件程序需要使用的加载入口,当然,按照大神们写的节点说明,可用的加载入口有六个,分别对应不同模块,而class的值就是我们写的插件目标类,以我写的为例子,<extra-core>里的LocaleFinder用于加载国际化资源,<extra-designer>里的CellAttributeProvider就是我的插件初始化入口。
有哥们可能会说,我直接复制你的下来改,怎么还不可以初始化我写的插件!!来,哥给你列一下坑点:
A. 你加载的模块入口选对了吗?extra-core里的东西不可以用extra-designer来加载,首先要找到正确的加载入口。不知道是那个?请教插件群里的大神吧。
B. 你加载的标签写对了吗?同样是extra-core模块,但有多个加载标签,LocaleFinder用于加载国际化文件;JavaScriptFileHandler用于加载js和css;而且一个模块可以有多个加载标签,你写对了吗?如果不知道,请教群里的大神吧。如果有下载源码,也可以自己加载类的顶级接口,例如我写的这个CellConditionAttributeTableProvider,它的顶级接口为CellAttributeProvider,里有个MARK_STRING = "CellAttributeProvider"的字段,这个值就是加载的标签。
C. 你更新了WebReport/WEB-INF/plugins对应文件夹里对应的plugin.xml文件了吗?上一个大坑里的第二个小坑你还记得吗?里面的plugin文件要跟插件里的文件同步,要不然你改得飞起都没用。
2.properties文件配置
ok,上面的坑你都跳过了,开始进入调试,但你发现你在国际化文件里配置的property都只是显示key而已。不用问,肯定是加载国际化文件的类里获取配置文件方法有问题啦,正确的应该如下图所示:
注意,上面find方法获取的值只要写到properties的前缀就可以啦,记得不要写后缀哦~~
三 打包测试及发布
1.打包
经过你一夜的通宵搬砖,你把插件代码捣鼓完了。恭喜你已经完成了一半。现在就要进行打包测试,用ant的打包教程可以看这个,如果不想这么麻烦,也可以学坛友wzh5788教我们的另一种打包方法,就是找一个原来打好的jar包,用解压的方式打开并替换里面的class文件,如下图:
(此图版权归@wzh5788 所有)
ps:记得换上你自己的plugin.xml文件哦
打包出jar后,将它和你的plugin文件一起压缩成一个zip,注意,plugin.xml不是打进jar里面的,而是要放在jar外面。
2.测试
打包好之后我们要进行本地测试一下,打开fineReport设计器(这个不是指我们启动源码工程的设计器,而真正安装的FineReport),然后点击服务器,选择插件管理,
进入后选择第三个tab下面的 从本地安装 ,如图:
之后会弹出一个重启生效提示,确定后就可以重启进行插件测试了。
3.发布
发布比较简单,首先在论坛的左上角那里进入 应用中心,登录后进入 用户中心,在左边的菜单可以让你注册成功开发者,注册ok后跟传说哥说让他审核,通过后你就可以看到发布插件的菜单。这里就不详细说了。
四 后话
经过上面的一大堆后,你就可以等审批通知啦。从个人来说,过程虽然繁杂,但并不是什么困难,只要按步骤做好就可以了。此外群里也有很多大神,很多问题他们都会非常耐心的给你们解答,在这里我也要对他们和传说哥表示感谢,因为如果没有他们的帮助,我们这些新手肯定要走很多弯路,再次感谢。其次还有个小建议,就是API文档说明可以弄详细点更好,因为我们不可能每个方法都去问,而有文档的帮助可以大大提高新手对源码的理解程度(就像我当初看了半天都不知道populate()是更新显示而update()是保存。。。)。最后,祝大家搬砖顺利
|