win7下kettle插件开发环境搭建

时间:2022-05-03 01:49:30

本文大部分内容转自:http://blog.fens.me/java-kettle-plugin-eclipse/

在配置过程中出现了一些问题,这里给出解决方案以及资源。

前言

Kettle一个开源的ETL工具,提供了一套界面操作的解决方案,从而代替原有的程序开发。但有时我们还需要开发自己的插件,来满足我们的业务需求。Kettle基于Eclipse的架构系统,通过JAVA作为客户端的实现。强大的ETL功能,和图形界面的操作,让Kettle成为免费的ETL工具的首选。

目录

1. Kettle插件开发介绍

2. 搭建kettle源代码环境

3. Eclipse中构建kettle项目

4. Eclipse中构建插件项目

5. 配置插件到Kettle

6. Kettle项目启动

7. kettle项目集成插件源代码

1. Kettle插件开发介绍

在我们做ETL工作的时候,在某些项目中往往会遇到一些特别的流程任务,kettle原有的流程处理节点已经不能满足我们的要求,这时候我们就需要定制流程处理节点了。定制流程节点主要是针对数据的管理、数据的验证和某些特别文件数据的提取。大家通过查看kettle源代码,就可以知道怎样去创建你自己的kettle插件了。

Kettle的插件开发,需要依赖于Kettle的源代码环境。

2. 搭建kettle源代码环境

1). githubclone下来

git clone https://github.com/lihongqiang/pentaho-kettle

2). 下载完成,执行ant,如果不成功,请自行看log info,一般就是build中描述的不存在而已。

~切换到kettle目录执行ant

Buildfile: D:\workspace\java\kettle\build.xml
......BUILD SUCCESSFULTotal time: 1 minute 29 seconds

build成功!!

3. 在Eclipse中构建kettle项目

1). kettle项目,导入到Eclipse中。

4. 在Eclipse中构建插件项目

1). 构建插件项目:可以基于一个模板去构建插件。

百度云盘:http://pan.baidu.com/s/1ntH2Btn

2). 解压后导入到eclipse工程:TemplateStepPlugin(和下面的kettle-TemplatePlugin类似)

复制类库

· kettle项目中,复制lib*.jarkettle-TemplatePlugin中的libext目录

· kettle项目中,复制libswt/win64swt.jskettle-TemplatePlugin中的libswt/win64目录

3). 刚才复制的类库加入项目依赖

4). kettle-TemplatePlugin项目,执行ant

 ~ D:\workspace\java\kettle-TemplatePlugin>ant
.......BUILD SUCCESSFULTotal time: 0 seconds

5). 修改distrib目录的文件

· icon.png:图标文件

· plugin.xml: 插件的配置文件(4.4以后的版本,可以去掉)

· TemplateStepPlugin.jar:是通过ant生成的文件

5. 配置插件到Kettle中

1). kettle-TemplatePlugin发布到kettle

a. kettle是工程增加2个目录

 ~ mkdir D:\workspace\java\kettle\distrib\plugins\steps\myPlugin
~ mkdir D:\workspace\java\kettle\plugins\steps\myPlugin

b. 修改kettle-TemplatePluginbuild.xml文件

<property name="deploydir" location="D:\workspace\java\kettle\distrib\plugins\steps\myPlugin"/>
<property name="projectdir" location="D:\workspace\java\kettle\plugins\steps\myPlugin"/> <fileset dir="${libswt}/win64/" includes="*.jar"/> <target name="deploy" depends="distrib" description="Deploy distribution..." ><echo>deploying plugin...</echo><copy todir="${deploydir}"><fileset dir="${distrib}" includes="**/*.*"/></copy> <copy todir="${projectdir}"><fileset dir="${distrib}" includes="**/*.*"/></copy></target>
 

c. kettle-TemplatePlugin项目执行ant

D:\workspace\java\kettle-TemplatePlugin>ant
Buildfile: D:\workspace\java\kettle-TemplatePlugin\build.xml BUILD SUCCESSFULTotal time: 0 seconds

2). kettle中查看目录:D:\workspace\java\kettle\distrib\plugins\steps\myPlugin

kettle-TemplatePlugin项目的3个文件,已经被放到了正确的位置

6. 命令行项目启动

1). 命令行启动kettlea. 修改Spoon启动命令,不开启新窗口,直接以JAVA运行

b. 运行Spoon.bat命令

 ~ D:\workspace\java\kettle\distrib>Spoon.bat ......

2). 查看kettle-TemplatePlugin 插件

a.点击核心对象,在Demon文件夹下面

7. 在kettle项目集成插件源代码

1). 通过Eclipse的 link source功能,连接kettle-TemplatePlugin项目
a. kettle项目中,选择link source,输入TemplatePlugin/src的地址和src的名字。

b. kettle项目中编程

2). 通过Eclipse启动kettle
a. Eclipse中配置启动Main Class: org.pentaho.di.ui.spoon.Spoon

b.增加64位的swt.jar类库

c. Eclipse中启动kettle

3). 通过Eclipse调用kettle-TemplatePlugin
a. 修改TemplateStepDialog.java,找到open方法,增加一行输出

 public String open() { 
System.out.println(“Open a dialog!!!”); ...
}

注意:这里在修改之后使用ant构建时会出现编码问题。

解决方法:

找到compile这个target,加入compilerarg line哪一行代码。

<target name="compile" depends="prepare">
<echo message="5.compile" />
<javac fork="true" target="1.6" srcdir="${src}" destdir="${build}" debug="true">
<!--给编译器指定编码,防止出现:"警告: 编码 GBK 的不可映射字符"-->
<compilerarg line="-encoding UTF-8 " />
<classpath refid="external.jars.path" />
</javac>
<echo message="compile finished!" />
</target>

b. Eclipse中,通过debug启动:org.pentaho.di.ui.spoon.Spoon
双点Template Plugin的图标,看到日志显示”Open a dialog!!!“

这样我们就构建好了,kettle插件的开发环境。接下来,我们就可以进行插件开发了!!