由于我们的openfire插件引入的包越来越多,导致插件也越来越大,而且openfire3.10.x之后取消了pack200的打包方式(压缩),导致打包出来的插件越来越大,大概10M左右,上传速度大概200KB/s,有时候上传插件到50%多,因为网络不好,导致又得重传,蛋疼~~~
因此就想琢磨着能不能不将插件开发时依赖的第三方包,不打包到插件之中。以下分析都是基于openfire3.10.x版本操作
1、首先解压插件分析结构,我们可以发现整个插件依赖的包是整个放到lib中的(和我们的开发目录中的lib很像啊~~~),初步推断打包的时候是直接将lib目录里面的东西全部拷贝过去的。
2、我们先移除掉插件的lib目录中jar文件的build path,现在我们的插件代码也因为找不到类显示红色叉叉了。
3、我们在build文件夹同级目录中新建chatlib目录,并将插件lib中的jar文件全部拷贝进去,并删除lib目录。并将jar文件build path(我是放到chatlib统一管理),如下图所示。
4、这时候,我们的代码不显示红色叉叉了,但是使用build.xml进行build的时候会报错。找不到类,这时候我们需要修改build.xml。首先我新建个属性,指向我们插件依赖jar的lib目录,如下图所示
5、还要修改一个地方,如下图所示(此种方法只是针对build我们自己的插件)
6、再次build,我们的插件可以build成功了。要使openfire能够运行这个插件,还需要将我们的插件依赖的jar拷贝到openfire的lib目录中,或者你可以自己在openfire根目录中新建个目录,但是这种方式需要修改openfire/bin目录中的openfire文件的脚本。
顺便解释下openfire.jar那个文件为什么没有引入lib,是因为build.xml里面有个参数,具体名字记不清了,可以将依赖的类直接拷贝到插件目录中~~
后记:此处我只提供一种方式,具体操作还是要根据实际需求去打包,如果有不懂可以联系我~~