Kettle源码学习(一)——把Kettle项目跑起来

  kettle(pentaho data integration),是一款开源的C/S版的ETL工具,最近打算学习一下kettle源码,并自己写一个mini kettle,并改造成基于事件触发的流处理模型,前端欲支持桌面版和Web版。

  首先,首要的工作是将kettle工程构建起来,达到能边跑看调试来观察学习源码。笔者采用的是自己构建一个项目,将kettle的相关模块代码和资源文件导入,并添加依赖库的方式,自认为有些不爽,但由于官网github下下来的工程,采用的是ivy构建工具,笔者没办法把依赖都下载下来,所以只能采用这种拙劣的方式。具体步骤如下:

  1. 下载源码。

    本次源代码,笔者使用的是5.0.1-stable-R版本。kettle使用git进行版本控制,我们到kettle的github仓库将源代码下载下来(也可以使用git命令下载相应版本分支)。

    如上图所示,访问github仓库,在Branch中选择tags,直接搜索5.0.1,选择5.0.1-stable-R版本,接着,点击Download ZIP下载项目的压缩文件到本地,并解压。

  2. 下载kettle发布包。

    这一步是为了为工程提供所依赖的jar包,由于很多jar无法下载成功,这里直接使用发布包中带的jar包,在后面的步骤中,将以此为基础新建用户库,新建的工程将依赖这个用户库。

    访问https://sourceforge.net/projects/pentaho/files/Data Integration/ 下载相应版本(笔者的是5.0.1-stable-R版本)的发布包,解压到本地。

    如果读者想使用其他版本,原则上是可以的,只要源代码和发布包的版本一致。

  3. 新建工程,拷入代码、资源。

    在Eclipse中,新建java工程,命名为kettle-5.0.1,新建几个源代码文件夹(source folder),分别为:core、dbdialog、engine、ui、resources,core、dbdialog、engine、ui与下载下来的源代码工程里的目录是一致的,将存放各个模块源代码,resources将存放这四个模块里的资源文件。

    分别拷贝步骤一获取的源代码的四个目录下的src目录下的org文件夹将其拷至新建工程的相应源代码文件夹。并将源代码的四个目录下的src目录下的除org文件夹以外的文件,拷贝至新建工程的resources源代码文件夹。另外,需要将源代码的assembly文件夹拷贝至新建工程中,设置子目录package-res为源代码文件夹,并把assembly\package-res\ui目录里的内容拷贝一份至新建工程的ui源代码文件夹下。

    完成此步骤,将得到如图所示的工程结构(不包含kettle-5.0.1用户库依赖)。

  4. 配置项目jdk版本和用户库。

    右键工程build path选择configure build path,修改jre system library为jdk1.6。点击windows->preferences,创建用户库kettle-5.0.1。如图所示:

    add external jars,找到步骤二下载下来的发布包下的lib目录,全部导入,并导入libswt\win64目录下的swt.jar,这里还需要将部分jar移除,需移除的jar如下:kettle-core-5.0.1-stable.jar、kettle-dbdialog-5.0.1-stable.jar、kettle-engine-5.0.1-stable.jar、kettle-ui-swt-5.0.1-stable.jar、xml-apis.jar、xmlParserAPIs-2.6.2.jar、stax-api-1.0.1.jar、wsdl4j-qname-1.6.1.jar。

    前4个kettle开头的是我们新建工程中已经有的代码,后面几个是为了解决jar包冲突问题。

    新建好用户库,右键工程build path选择configure build path,点击add library,选择User library,将kettle-5.0.1引入。如下图所示

  完成以上步骤后后,kettle就能跑起来了,kettle入口类是ui模块下的org.pentaho.di.ui.spoon.Spoon.java

posted @ 2016-05-01 23:36  Phoenix-Smile  阅读(5045)  评论(2编辑  收藏  举报