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. 面试题——SSM面试题

      树木丛生红火火 树木丛生红火火 微信公众号:Java全栈开发大联盟 原文地址:https://note.youdao.com/ynoteshare1/index.html?id=3f81baea7 ...

  2. c语言1-2019秋作业02

    格式: 这个作业属于那个课程 C语言程序设计I 这个作业要求在哪里 http://edu.cnblogs.com/campus/zswxy/SE2019-3/homework/8688 我在这个课程的 ...

  3. flutter 项目中打印原生安卓的log信息

    因为项目的需要 在flutter 中调用安卓的方法 再用安卓的方法去调用c写的so包 方法 如果当前项目下面没有android stduio 自带的logcat  那就利用下面的方法 在安卓代码中引入 ...

  4. ACM-ICPC 2016 大连赛区现场赛 K. Guess the number && HDU 5981(思维+DP)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=5981 题意:A在[L, R]之间随机选取一个数X,之后B来猜这个数,如果猜的数比X小,那么A就告诉B猜 ...

  5. jsp前台输入框不输入值,后台怎么取出整型?

    当前台输入框限定整型,后台取值就会出现很多问题. eg: Integer.parseInt(request.getParameter("uno"));当前台的文本框不输入值,直接点 ...

  6. Verilog求余

    在实现三角函数时,考虑到函数的周期性,综量(自变量)需对周期做求余运算. 假设函数周期为T = 2^N,那么求余运算就是直接取该数的低N位,即: 以M位正数为例(符号位为0),reg [M-1:0] ...

  7. Educational Codeforces Round 33 (Rated for Div. 2) B题

    B. Beautiful Divisors Recently Luba learned about a special kind of numbers that she calls beautiful ...

  8. SQL Server 基础:ADO.NET

    序言 Connection 主要提供与数据库的连接功能 Command 用于返回数据.修改数据.运行存储过程以及发送或检索参数信息的数据库命令 CommandType 获取或设置Command对象要执 ...

  9. Educational Codeforces Round 13 D. Iterated Linear Function 逆元+公式+费马小定理

    D. Iterated Linear Function time limit per test 1 second memory limit per test 256 megabytes input s ...

  10. 编译参数(-D)

    程序中可以使用#ifdef来控制输出信息 #include<stdio.h> #define DEBUG int main() { ; ; int sum = a + b; #ifdef ...