ETL工具kettle源码编译

kettle是一个开源项目,作为ETL工具,kettle提供了丰富的功能和简洁的图形化界面。最近在整这个玩意儿,发现网上关于kettle的东西真是太少了,在搭建源码的过程中着实走了好多弯路。

本文章详细介绍kettle源码在Eclipse中的搭建:

        第一步:下载源码,https://github.com/pentaho/pentaho-kettle/releases点击打开链接,得到一个zip格式压缩包。我稍微建议一下,选择版本的时候尽量 选择stable(稳定版)的,我下载的是4.4和5.0.1的stable版)

        第二步:在当前Eclipse的工作空间中解压刚刚下载的源码zip,并将解压后的文件夹名称随便改的简短一些,例如: 

              

                      确保双击打开该文件夹时的内容为项目源码文件目录,即双击打开后为:

                 

        第三步:打开Eclipse,新建java project,注意jdk的版本1.5及以上。

                     

                  点击Finish,这时候Eclipse会自动加载之前解压的源码并会自动识别是否为Source Folder,等待Eclipse加载完成。

        第四步:此时源码肯定各种报错,是因为第三方jar包没有的缘故,没有关系。为了解决第三方jar包的问题,我们需要下载kettle的发行包了,再提供一个地址:http://sourceforge.net/projects/pentaho/files/Data%20Integration/点击打开链接一定要注意:此时下载的发行包版本要和之前下载的源码包版本保持一致!下载完之后任意地方解压。

        第五步:在Eclipse中的项目中新建一个叫libs的文件夹(叫什么没什么关系),打开刚刚解压的发行包目录----->pdi-ce-5.3.0.0-213\data-integration\lib, 将lib中的所有jar包一个不漏地复制到项目中新建的libs目录下。另外,将pdi-ce-5.3.0.0-213\data-integration下的libswt文件夹复制到项目中,与 libs同级即可。

        第六步:打开pdi-ce-5.3.0.0-213\data-integration\plugins,将该目录下的所有文件夹中的每个lib文件夹中的jar包(仅仅是lib文件夹中的,当然有些lib下是没有jar包的),拷贝到项目中的libs中。

               

***********以上所涉及的“pdi-ce-5.3.0.0-213\data-integration”等路径是我下载的发行包路径***********

        第七步:选中libs中的所有jar包,右键选择build path----->add to build path。此时有个非常重要的步骤,在项目的任何一个文件右键再选择build path---->configure build path---->Add JARs。

                 

然后进入选择jar包界面,这时候从发行包中拷贝的libswt文件夹就派上用场了。

在看到有个win32和win64的时候就要小心了,如果你的jdk是32位的,这时候就选择win32中的swt.jar,否则选择win64中的swt.jar,跟你的系统是多少位的没有关系。

               

点击OK完了之后就可以看到在java build path中已经有了swt.jar,再点击OK。

               

这时候该导入的包就导完了,但是项目上还是有错误,这是因为源码中有类名冲突,解决这个问题好说,你会看到项目中的source folder有这么一个特点:

           

一个最后是src,一个最后是test,那么现在把以test结尾的干掉!千万小心不要干错了,另外吐个槽,每干掉一个Eclipse的building真是太慢了,如果你等不及可以直接点击红方框结束它,等到删最后一个test结尾的源码包时再等待building完成。

        附加:可能在做完上述步骤之后,还不知道怎么运行程序,或者源码中还是报错,那么现在来解决这几个问题:

1.源码报错:

找到报错的类,如果是engine/src/org/pentaho/di/trans/steps/xsdvalidator下的XsdValidator.java报错的话,定位到报错的地方,将报错的代码改为SchemaFactory.newInstance("http://www.w3.org/2001/XMLSchema");报错原因是jdk版本,jdk7的版本取消了原代码中引用的那个String类型的常量。

还有,如果用jdk6或者7的话,在libs中需要删掉两个jar包,build path中也要remove掉着两个,因为在jdk6、7版本中已经整合了,再次导入有冲突,这两个jar文件分别是xml-apis.jarxmlParserAPIs.jar,不用弄错了,因为libs中还有一个xml-apis-ext.jar。

如果是log4j(源码中有日志相关的报错)的话,应该是log4j.jar的冲突问题,有些版本的kettle源码中会有两个不同版本的log4j的包,找到这两个包,把版本相对较老的删掉,同样build path中也要remove掉。

做完上面的步骤,编译应该没有问题了,下面来看源码如何运行。kettle的主类是Spoon.java,路径是:项目名/ui/src/org/pentaho/di/ui/spoon/Spoon.java。

                   

主类(包含main方法的类)为:org.pentaho.di.ui.spoon.Spoon。按照上图配置完成之后,点击run,源码就可以跑起来了!

当然还有另外一种方法,就是修改.launch文件,kettle5之后的版本源码中都会有一个project.launch文件,将该文件名字修改为"项目名,launch",打开该文件,将该文件中的”@@@“都修改为项目名即可。保存----->然后在launch文件上右键----->run as,选择第一项(一般就是项目名)就可以运行了!

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值