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

Kettle源码学习(一)——把Kettle项目跑起来的更多相关文章

  1. kettle系列-1.kettle源码获取与运行

    第一次写博客,心里有点小激动,肯定有很多需要改进的地方,望海涵. kettle算是我相对较为深入研究过的开源软件了,也是我最喜欢的开源软件之一,它可以完成工作中很多体力劳动,在ETL数据抽取方面得到了 ...

  2. pentaho专题系列之kettle篇--kettle源码编译

    最近看了一些kettle的文章,都是kettle7.0以前的,已经跟不上时代了.截止笔者写这篇文章的时候,github上面的已经是7.1.0.3了,而且是发行版的,最新的快照版本已经是8.0的了.基于 ...

  3. 『TensorFlow』SSD源码学习_其一:论文及开源项目文档介绍

    一.论文介绍 读论文系列:Object Detection ECCV2016 SSD 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层feature map 多层feat ...

  4. Hadoop源码学习笔记之NameNode启动场景流程一:源码环境搭建和项目模块及NameNode结构简单介绍

    最近在跟着一个大佬学习Hadoop底层源码及架构等知识点,觉得有必要记录下来这个学习过程.想到了这个废弃已久的blog账号,决定重新开始更新. 主要分以下几步来进行源码学习: 一.搭建源码阅读环境二. ...

  5. 05.ElementUI源码学习:项目发布配置(github pages&npm package)

    0x00.前言 书接上文.项目第一个组件已经封装好,说明文档也已编写好.下面需要将说明文档发布到外网上,以此来展示和推广项目,使用 Github Pages功能实现.同时将组件发布之 npm 上,方便 ...

  6. Qt Creator 源码学习笔记03,大型项目如何管理工程

    阅读本文大概需要 6 分钟 一个项目随着功能开发越来越多,项目必然越来越大,工程管理成本也越来越高,后期维护成本更高.如何更好的组织管理工程,是非常重要的 今天我们来学习下 Qt Creator 是如 ...

  7. MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)

    前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...

  8. MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)

    前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...

  9. MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)

    前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...

随机推荐

  1. STM32写选项字节(option bytes)的正确姿势

    STM32 的 Flash information block 部分,包含有特殊的选项字节,可以用于系统配置等信息, 其中还有两个有效字节(实际四个字节,两个是校验字节)的用户自定义数据字节. 在尝试 ...

  2. 轻量化模型之MobileNet系列

    自 2012 年 AlexNet 以来,卷积神经网络在图像分类.目标检测.语义分割等领域获得广泛应用.随着性能要求越来越高,AlexNet 已经无法满足大家的需求,于是乎各路大牛纷纷提出性能更优越的 ...

  3. SPI总线的原理与Verilog实现

    转载地址:https://www.cnblogs.com/liujinggang/p/9609739.html 一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件 ...

  4. 多线程模块的同步机制event对象

    多线程模块的同步机制event对象 线程的核心特征就是他们能够以非确定的方式(即何时开始执行,何时被打断,何时恢复完全由操作系统来调度管理,这是用户和程序员无法确定的)独立执行的,如果程序中有其他线程 ...

  5. MCU KEIL printf函数

    //加入以下代码,支持printf函数,而不需要选择use MicroLIB #if 1 #pragma import(__use_no_semihosting) //标准库需要的支持函数 struc ...

  6. [Abp vNext微服务实践] - 启动流程

    前几篇分别介绍了abp vNext微服务框架和微服务CI/CD环境搭建,本篇开始介绍vNext微服务框架的开发环境搭建. 环境准备 官方介绍的系统架构图如下: 上图中身份服务和网关服务已经集成在系统中 ...

  7. async 与 await

    async 关键字 1.含义:表示函数是一个异步函数,意味着该函数的执行不会阻塞后面代码的执行 2.定义与调用 async function hello (flag) { if (flag) { re ...

  8. 数字证书注册审批机构(RA)

    1.证书注册审批机构 RA(Registration Authority),数字证书注册审批机构.RA系统是CA的证书发放.管理的延伸.它负责证书申请者的信息录入.审核以及证书发放等工作:同时,对发放 ...

  9. IIS配置web.config 将带www域名转为不带www域名

    在configuration节点中添加 <configuration> <system.webServer> <rewrite> <rules> < ...

  10. CF487E Tourists[圆方树+树剖(线段树套set)]

    做这题的时候有点怂..基本已经想到正解了..结果感觉做法有点假,还是看了正解题解.. 首先提到简单路径上经过的点,就想到了一个关于点双的结论:两点间简单路径上所有可能经过的点的并等于路径上所有点所在点 ...