提问
 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,极速登录

插件开发---菜鸟入门及坑点全解

Alex-ce 帆软插件开发者 初学乍练(Lv1)
发表于 2016-3-10 23:11 | 显示全部楼层 |取消关注该作者的回复
亲们,最近是不是看到传说哥发了很多插件开发招标,但想做又找不到方向?或者做到一半又各种坑?现在,我亲自经历的坑点教程来啦~~~大家一起来拍砖~~不对,一起来撒花~~,废话不多说,下面都是坑。。
一  开发环境搭建和Debug
       开发工具:Intellij IDE v15  (本来想用eclipse的,但我按传说哥的那个eclipse搭建教程实在不行,所以还是用这个吧)
       JDK:  1.8   (JDK怎么装这个就不要写了吧,自己度娘去)
       安装好后,首先去把源码clone下来。在这里要说一下,论坛里也有教程是教大家直接新建一个插件的工程,然后再引用fineReport的核心包。这样也行,但个人觉得还是看一下源码比较好,这样对我们理解fineReport的类结构和实现逻辑有很大帮助;其次,FR的API说明文档真的很坑爹啊,说明简单到简直是惜字如金啊,看了没有看一个样啊(要变身咆哮哥的节奏~~)。所以,还是看一下源码吧~
     源码的下载(点击这里)跟配置方法看这个链接(点击这里注意:这里有两个坑!!
     1.进行到上面教程的第四步的时候,也就是配置好class输出路径的时候,你会发现有一大堆红点!!
         2655456e129ad1d2da.png
      没错,聪明的你发现有个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文件,配置文件的各个节点意义可以看这里
        可能有哥们说,看完我不知道有什么用。呵呵,我不会笑你的,因为我看完了也不知道。所以我加了下面两个图作对比:
       6957956e13dc8b413d.png       268056e13d0c1bc91.png

       图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而已。不用问,肯定是加载国际化文件的类里获取配置文件方法有问题啦,正确的应该如下图所示:
2086856e174dec7180.png
注意,上面find方法获取的值只要写到properties的前缀就可以啦,记得不要写后缀哦~~

三 打包测试及发布
    1.打包
       经过你一夜的通宵搬砖,你把插件代码捣鼓完了。恭喜你已经完成了一半。现在就要进行打包测试,用ant的打包教程可以看这个,如果不想这么麻烦,也可以学坛友wzh5788教我们的另一种打包方法,就是找一个原来打好的jar包,用解压的方式打开并替换里面的class文件,如下图:
2458756e183e34f709.png
(此图版权归@wzh5788 所有)
ps:记得换上你自己的plugin.xml文件哦
      打包出jar后,将它和你的plugin文件一起压缩成一个zip,注意,plugin.xml不是打进jar里面的,而是要放在jar外面。

      2.测试
        打包好之后我们要进行本地测试一下,打开fineReport设计器(这个不是指我们启动源码工程的设计器,而真正安装的FineReport),然后点击服务器,选择插件管理,
2576756e1878630986.png
      进入后选择第三个tab下面的  从本地安装  ,如图:
3919456e18803db0eb.png
          之后会弹出一个重启生效提示,确定后就可以重启进行插件测试了。


        3.发布
        发布比较简单,首先在论坛的左上角那里进入  应用中心,登录后进入  用户中心,在左边的菜单可以让你注册成功开发者,注册ok后跟传说哥说让他审核,通过后你就可以看到发布插件的菜单。这里就不详细说了。


四 后话
        经过上面的一大堆后,你就可以等审批通知啦。从个人来说,过程虽然繁杂,但并不是什么困难,只要按步骤做好就可以了。此外群里也有很多大神,很多问题他们都会非常耐心的给你们解答,在这里我也要对他们和传说哥表示感谢,因为如果没有他们的帮助,我们这些新手肯定要走很多弯路,再次感谢。其次还有个小建议,就是API文档说明可以弄详细点更好,因为我们不可能每个方法都去问,而有文档的帮助可以大大提高新手对源码的理解程度(就像我当初看了半天都不知道populate()是更新显示而update()是保存。。。)。最后,祝大家搬砖顺利
8056456e13caa1df8a.png
3298356e183acc29eb.png

点评

111111  发表于 2016-3-11 09:50

评分

参与人数 8F豆 +7038 F币 +99 收起 理由
MOVINGFINGER + 10 赞一个!
saber + 259
huiluxin_he + 1 赞一个!
传说哥 + 6666 + 99 我给99,给你100怕你骄傲
山城棒棒冰真棒 + 1 赞一个!
波斯猫 + 1 赞一个!
阿迪 + 1 给1分凑100
无语 + 99 给你99,给100怕你会傲娇

查看全部评分

此帖共有 4208 位番薯登录后查看

已有3人关注本帖

yihJBadmin
回复

使用道具 举报

无语 番薯互助团队 互助新人
发表于 2016-3-11 08:10 | 显示全部楼层 |取消关注该作者的回复
居然看完了。。。。。写的不错,坑点详尽,文笔犀利。。
  收起(1)
  • Alex-ce Alex-ce

    谢谢~
    2016-03-11 11:52 评论
  • 评论

回复 支持 反对

使用道具 举报

哈易春 番薯互助团队 禁止发言
发表于 2016-3-11 08:26 | 显示全部楼层 |取消关注该作者的回复
看起来很牛逼的样子。
  收起(1)
  • Alex-ce Alex-ce

    哈哈,其实是装逼~~
    2016-03-11 11:52 评论
  • 评论

回复 支持 反对

使用道具 举报

漩涡 番薯互助团队 帆软员工 互助砖家、助理编辑
发表于 2016-3-11 08:58 | 显示全部楼层 |取消关注该作者的回复
文笔很好,写的很详细,很多细节都描述到了
  收起(1)
  • Alex-ce Alex-ce

    漩涡大神,后面有问题的话还要多点指导啊~~{:6_158:}
    2016-03-11 11:54 评论
  • 评论

回复 支持 反对

使用道具 举报

阿迪 社区微信达人番薯互助团队 帆软插件开发者 互助叫兽
发表于 2016-3-11 09:03 | 显示全部楼层 |取消关注该作者的回复
等我有空的时候来学习下
  收起(1)
  • Alex-ce Alex-ce

    有空的时候能指导下我前端么?
    2016-03-11 11:54 评论
  • 评论

回复 支持 反对

使用道具 举报

duanhr  渐入佳境(Lv2)
发表于 2016-3-11 09:05 | 显示全部楼层 |取消关注该作者的回复
留个脚印,待会 来学习下~
  收起(2)
  • Alex-ce Alex-ce

    这个可以有~
    2016-03-11 11:55 评论
  • Alex-ce Alex-ce

    一起来,更精彩
    2016-03-11 11:58 评论
  • 评论

回复 支持 反对

使用道具 举报

传说哥 社区微信达人实名认证 番薯互助团队 帆软员工 管理员
发表于 2016-3-11 10:00 | 显示全部楼层 |取消关注该作者的回复
我觉得我应该再多给点的,写得确实很好
  收起(1)
  • Alex-ce Alex-ce

    是的,我也觉得,传说哥拿多点F豆和F币砸我吧
    2016-03-11 11:56 评论
  • 评论

回复 支持 反对

使用道具 举报

xushanshan  初学乍练(Lv1)
发表于 2016-3-11 10:10 | 显示全部楼层 |取消关注该作者的回复
学习 学习!{:5_134:}
  收起(1)
  • Alex-ce Alex-ce

    共同进步~~
    2016-03-11 11:57 评论
  • 评论

回复 支持 反对

使用道具 举报

njxzwhh 实名认证 初学乍练(Lv1)
发表于 2016-3-11 16:47 | 显示全部楼层 |取消关注该作者的回复
太牛了 好厉害啊
  • 评论

回复 支持 反对

使用道具 举报

qq505779678  初学乍练(Lv1)
发表于 2016-3-11 18:49 | 显示全部楼层 |取消关注该作者的回复
好好学习,天天向上~!
  • 评论

回复 支持 反对

使用道具 举报

huiluxin_he 实名认证 浪迹天涯(Lv4)
发表于 2016-3-14 09:54 | 显示全部楼层 |取消关注该作者的回复
太厉害了,必须点赞
  • 评论

回复 支持 反对

使用道具 举报

yinanqi  初学乍练(Lv1)
发表于 2016-3-14 14:00 | 显示全部楼层 |取消关注该作者的回复
mark一下,本菜菜要向楼主学习
  • 评论

回复 支持 反对

使用道具 举报

maybe 社区微信达人番薯互助团队 互助新人
发表于 2016-3-15 09:29 | 显示全部楼层 |取消关注该作者的回复
太好了 喜欢这样的坑
  • 评论

回复 支持 反对

使用道具 举报

Sandwich  初学乍练(Lv1)
发表于 2016-3-19 18:46 | 显示全部楼层 |取消关注该作者的回复
好厉害的样子
  • 评论

回复 支持 反对

使用道具 举报

MOVINGFINGER  渐入佳境(Lv2)
发表于 2016-3-21 09:04 | 显示全部楼层 |取消关注该作者的回复
虽然我不懂开发插件,不过看了你这篇,好像激起一点兴趣,赞一个!!
  • 评论

回复 支持 反对

使用道具 举报

qq519124677  初学乍练(Lv1)
发表于 2016-3-22 10:17 | 显示全部楼层 |取消关注该作者的回复
  好厉害,学习了
  • 评论

回复 支持 反对

使用道具 举报

zhouyouliang  初学乍练(Lv1)
发表于 2016-7-21 17:22 | 显示全部楼层 |取消关注该作者的回复
我也是今天刚做插件,环境搭建好了,但是我env WebReport/WEB-INF/ 下怎么么有你说的plugins文件夹
  收起(1)
  • Alex-ce Alex-ce

    这个应该是自动生成的,如果没有,你可以尝试下自己新建一下
    2016-08-12 09:54 评论
  • 评论

回复 支持 反对

使用道具 举报

李半仙 番薯互助团队 互助砖家、VIP1
发表于 2016-9-1 12:17 | 显示全部楼层 |取消关注该作者的回复
看了一半,觉得跃跃欲试了,遂。。。mark一下
  • 评论

回复 支持 反对

使用道具 举报

zlmFR 社区微信达人 初学乍练(Lv1)
发表于 2016-9-11 18:22 | 显示全部楼层 |取消关注该作者的回复
看起来很牛逼的样子,回头看看
  • 评论

回复 支持 反对

使用道具 举报

purplexin 实名认证 渐入佳境(Lv2)
发表于 2016-9-12 13:57 | 显示全部楼层 |取消关注该作者的回复
看起来很牛逼的样子,话说JAVA学的很浅的可以做开发么?做过一年peoplesoft的开发,不过貌似没啥用~~~~
  • 评论

回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

Copyright © 帆软|联系帆软| 联系管理员@兔子酱|免责声明|手机版|帆软社区 ( 苏ICP备14031611号-3 )

GMT+8, 2018-10-16 20:26 , Processed in 1.169119 second(s), 214 queries , Gzip On.

返回顶部 返回列表