您的位置:首页 > 其它

Spark IM 插件开发环境搭建

2014-01-15 11:11 351 查看
网上这方面的资料好少哦,官方的文档也很久没有更新了,走了不少弯路 T_T,新手入门,高玩见谅~

准备工作

Sparkplug Kit下载:sparkplug_kit_2_0_7.zip

Sparkplug Kit文档:Development Guide

官方demo 插件Jar:examples.jar

这个jar解压后,配合docs看,有里面的demo的源码

还有就是之前搭建好的源码开发环境,编译成功的target文件夹(很重要...因为这个sparkplug_kit开发环境是很老的spark版本...)

文库里面一个doc中文版:http://wenku.baidu.com/view/7a8c04c9d5bbfd0a79567350.html

环境搭建

1、创建Project
创建一个叫Sparkplug的JavaProject

将 sparkplug_kit_2_0_7.zip 解压出来目录下的 builder、spark文件夹拷贝到这个项目的目录下

将之前spark源码开发环境编译成功后的 target/build 下的文件夹替换当前项目 Sparkplug/spark/ 目录下的所有文件(删除之前的先,不是合并)

2、设置属性
右键项目,设置Properties,Java Build Path

Source:选择Sparkplug/builder/src

Libraries:导入Sparkplug/spark/lib 下的所有jar

HelloWorld

1、写一个demo
新建一个包目录,com.mypackage,然后创建一个MyPlugin.java 的Class(默认路径,这样建立后配置文件基本不用改了,后面会说)

实现Plugin接口

public class MyPlugin implements Plugin {

/**
* Called after Spark is loaded to initialize the new plugin.
* 初始化事件
*/
@Override
public void initialize() {
System.out.println("——————————Welcome To Spark———————————");
addTabToSpark();
}

/**
* Called when Spark is shutting down to allow for persistence of information
* or releasing of resources.
* 关闭事件,以便对信息的持久化或释放资源
*/
@Override
public void shutdown() {
System.out.println("——————————shutdown———————————");

}

/**
* Return true if the Spark can shutdown on users request.
* @return true if Spark can shutdown on users request.
* 是否允许用户直接关闭
* 返回 是否允许
*/
@Override
public boolean canShutDown() {

return false;
}

/**
* Is called when a user explicitly asked to uninstall this plugin.
* The plugin owner is responsible to clean up any resources and
* remove any components install in Spark.
* 删除插件事件
* 清除资源文件、组件等等
*/
@Override
public void uninstall() {

}

/**
* 将我自己的标签到Spark工作空间
*/
private void addTabToSpark(){
System.out.println("——————————addTabToSpark———————————");
// 从 SparkManager(Spark管理器) 获取 Workspace UI(主界面) 对象
Workspace workspace = SparkManager.getWorkspace();
// 从 Workspace UI 对象获取 SparkTabbedPane(底部Tab栏) 对象
SparkTabbedPane sparkTabbedPane = workspace.getWorkspacePane();
// 添加自定义Tab
sparkTabbedPane.addTab("我的标签", null, new JButton("哈哈"));
}

}


可以看到,我们需要实现

initialize()、shutdown()、canShutDown()、uninstall() 四个方法

前2个很好理解,canShutDown()目前还没弄清楚是干嘛的...-_-#,uninstall()还没用到过。

总之先来个最简单的例子创建一个自己的标签。

2、配置文件
打开Sparkplug/builder 目录下的 plugin.xml 文件

<!-- Define your plugin -->
<plugin>
<!-- 插件的名称 -->
<name>My Plugin</name>
<!-- 插件的版本 -->
<version>1.0</version>
<!-- 插件的作者 -->
<author>Don Juan</author>
<!-- 关于该插件更多信息的地址 -->
<homePage>http://www.jivesoftware.org</homePage>
<!-- 邮箱地址 -->
<email>donjuan@jivesoftware.com</email>
<!-- 插件的描述 -->
<description>This is my first cool Spark Plugin.</description>
<!-- 类路径 -->
<class>com.mypackage.MyPlugin</class>
<!-- 允许该插件最小的Spark版本号,如果Spark的版本号比需要的小,则插件不会被启动 -->
<minSparkVersion>2.0.0</minSparkVersion>
</plugin>


如果你的包结构是这样的话,就不用改了,如果不一样请修改<class>标签下的路径

3、打包
打开sparkplugs/builder/build 下的 build.xml

<project name="sparkplug" default="jar" basedir="..">

<property name="plug.dir" value="${basedir}/."/>
<property name="plug.lib.dir" value="${plug.dir}/lib"/>

<property name="classes.dir" value="${basedir}/build/classes"/>
<property name="src.dir" value="${plug.dir}/src"/>
<property name="target.dir" value="${plug.dir}/target"/>
<property name="target.lib.dir" value="${plug.dir}/target/lib"/>
<property name="jar.file" value="${target.dir}/lib/plugin-classes.jar"/>

<property name="spark.home" value="${plug.dir}/../spark" />

<path id="lib.classpath">
<fileset dir="${plug.lib.dir}" includes="**/*.jar, **/*.zip"/>
<fileset dir="${spark.home}/lib" includes="**/*.jar, **/*.zip"/>
<fileset dir="${spark.home}/lib/windows" includes="**/*.jar" />
</path>

<target name="clean" description="Cleans all build related output">
<delete file="${jar.file}"/>
<delete dir="${classes.dir}"/>
<delete dir="${target.dir}"/>
</target>

<target name="compile" description="Compiles plugin source">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}"
destdir="${classes.dir}"
classpathref="lib.classpath"
source="1.6"
debug="true"
target="1.6"/>
<copy todir="${classes.dir}">
<fileset dir="${src.dir}" includes="**/*.png"/>
<fileset dir="${src.dir}" includes="**/*.gif"/>
<fileset dir="${src.dir}" includes="**/*.jpg"/>
<fileset dir="${src.dir}" includes="**/*.jpeg"/>
</copy>
</target>

<target name="jar" depends="clean,compile" description="Makes a plugin jar">
<mkdir dir="${target.dir}" />
<mkdir dir="${target.lib.dir}"/>

<copy todir="${target.lib.dir}">
<fileset file="${plug.lib.dir}/lib" includes="**/*"/>
</copy>

<copy todir="${target.dir}">
<fileset file="${plug.dir}/plugin.xml"/>
</copy>

<jar basedir="${classes.dir}" file="${jar.file}" update="false"/>

<zip zipfile="${plug.dir}/myplugin.jar" basedir="${target.dir}" />
</target>

<target name="run" depends="jar" description="Makes a plugin jar and starts Spark with that plugin">
<copy todir="${basedir}/../spark/plugins"
file="${plug.dir}/myplugin.jar" />

<property name="sparklib" value="${basedir}/../spark/lib" />
<java fork="true" classname="org.jivesoftware.Spark" dir="${basedir}/../spark/bin">
<classpath>
<fileset dir="${sparklib}">
<include name="**/*.jar" />
<include name="**/*.exe" />
<include name="**/*.dll" />
</fileset>
<pathelement location="${basedir}/../spark/resources" />
</classpath>
<jvmarg value="-Dappdir=${basedir}/../spark" />
</java>
</target>

</project>


代码中的这一段

<target name="compile" description="Compiles plugin source">
<mkdir dir="${classes.dir}"/>
<javac srcdir="${src.dir}"
destdir="${classes.dir}"
classpathref="lib.classpath"
source="1.4"
debug="true"
target="1.4"/>
<copy todir="${classes.dir}">
<fileset dir="${src.dir}" includes="**/*.png"/>
<fileset dir="${src.dir}" includes="**/*.gif"/>
<fileset dir="${src.dir}" includes="**/*.jpg"/>
<fileset dir="${src.dir}" includes="**/*.jpeg"/>
</copy>
</target>


基本配置都不用改,只需将1.4改为1.6即可

Window ——> Show View ——> Ant ——> Add Buildfiles

加入Sparkplug/builder/build/build.xml,双击sparkplugs

看到控制台BUILD SUCCESSFUL,就好了~

目录Sparkplug/builder下的myplugin.jar 就是打包成功后的插件了,如果要直接使用的话,只需将其拷贝进spark软件目录下plugins文件夹中就可以了。

4、运行
不要直接运行

右键项目 Run As ——> Run Configurations

创建一个Java Application

Main:

Project:选择当前项目Sparkplug

MainClass:org.jivesoftware.launcher.Startup

建议勾上Stop in Main

Arguments:

VM arguments:-Dplugin="${workspace_loc:Sparkplug}\builder\target\plugin.xml"

ClassPath:

User Entries ——> Advanced Options ——> Add Foldes 选择 Sparkplug/spark/resources

点击Run



成功了~

资料

Sparkplug Kit文档:http://www.igniterealtime.org/builds/sparkplug_kit/docs/latest/sparkplug_dev_guide.html

官方API文档:http://www.igniterealtime.org/builds/sparkplug_kit/docs/latest/api/index.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: