Kettle源码学习(一)——把Kettle项目跑起来
kettle(pentaho data integration),是一款开源的C/S版的ETL工具,最近打算学习一下kettle源码,并自己写一个mini kettle,并改造成基于事件触发的流处理模型,前端欲支持桌面版和Web版。
首先,首要的工作是将kettle工程构建起来,达到能边跑看调试来观察学习源码。笔者采用的是自己构建一个项目,将kettle的相关模块代码和资源文件导入,并添加依赖库的方式,自认为有些不爽,但由于官网github下下来的工程,采用的是ivy构建工具,笔者没办法把依赖都下载下来,所以只能采用这种拙劣的方式。具体步骤如下:
下载源码。
本次源代码,笔者使用的是5.0.1-stable-R版本。kettle使用git进行版本控制,我们到kettle的github仓库将源代码下载下来(也可以使用git命令下载相应版本分支)。
如上图所示,访问github仓库,在Branch中选择tags,直接搜索5.0.1,选择5.0.1-stable-R版本,接着,点击Download ZIP下载项目的压缩文件到本地,并解压。
下载kettle发布包。
这一步是为了为工程提供所依赖的jar包,由于很多jar无法下载成功,这里直接使用发布包中带的jar包,在后面的步骤中,将以此为基础新建用户库,新建的工程将依赖这个用户库。
访问https://sourceforge.net/projects/pentaho/files/Data Integration/ 下载相应版本(笔者的是5.0.1-stable-R版本)的发布包,解压到本地。
如果读者想使用其他版本,原则上是可以的,只要源代码和发布包的版本一致。
新建工程,拷入代码、资源。
在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用户库依赖)。
配置项目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项目跑起来的更多相关文章
- kettle系列-1.kettle源码获取与运行
第一次写博客,心里有点小激动,肯定有很多需要改进的地方,望海涵. kettle算是我相对较为深入研究过的开源软件了,也是我最喜欢的开源软件之一,它可以完成工作中很多体力劳动,在ETL数据抽取方面得到了 ...
- pentaho专题系列之kettle篇--kettle源码编译
最近看了一些kettle的文章,都是kettle7.0以前的,已经跟不上时代了.截止笔者写这篇文章的时候,github上面的已经是7.1.0.3了,而且是发行版的,最新的快照版本已经是8.0的了.基于 ...
- 『TensorFlow』SSD源码学习_其一:论文及开源项目文档介绍
一.论文介绍 读论文系列:Object Detection ECCV2016 SSD 一句话概括:SSD就是关于类别的多尺度RPN网络 基本思路: 基础网络后接多层feature map 多层feat ...
- Hadoop源码学习笔记之NameNode启动场景流程一:源码环境搭建和项目模块及NameNode结构简单介绍
最近在跟着一个大佬学习Hadoop底层源码及架构等知识点,觉得有必要记录下来这个学习过程.想到了这个废弃已久的blog账号,决定重新开始更新. 主要分以下几步来进行源码学习: 一.搭建源码阅读环境二. ...
- 05.ElementUI源码学习:项目发布配置(github pages&npm package)
0x00.前言 书接上文.项目第一个组件已经封装好,说明文档也已编写好.下面需要将说明文档发布到外网上,以此来展示和推广项目,使用 Github Pages功能实现.同时将组件发布之 npm 上,方便 ...
- Qt Creator 源码学习笔记03,大型项目如何管理工程
阅读本文大概需要 6 分钟 一个项目随着功能开发越来越多,项目必然越来越大,工程管理成本也越来越高,后期维护成本更高.如何更好的组织管理工程,是非常重要的 今天我们来学习下 Qt Creator 是如 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(四:了解神奇的视图引擎)
前言:通过之前的三篇介绍,我们基本上完成了从请求发出到路由匹配.再到控制器的激活,再到Action的执行这些个过程.今天还是趁热打铁,将我们的View也来完善下,也让整个系列相对完整,博主不希望烂尾. ...
- MVC系列——MVC源码学习:打造自己的MVC框架(三:自定义路由规则)
前言:上篇介绍了下自己的MVC框架前两个版本,经过两天的整理,版本三基本已经完成,今天还是发出来供大家参考和学习.虽然微软的Routing功能已经非常强大,完全没有必要再“重复造轮子”了,但博主还是觉 ...
- MVC系列——MVC源码学习:打造自己的MVC框架(二:附源码)
前言:上篇介绍了下 MVC5 的核心原理,整篇文章比较偏理论,所以相对比较枯燥.今天就来根据上篇的理论一步一步进行实践,通过自己写的一个简易MVC框架逐步理解,相信通过这一篇的实践,你会对MVC有一个 ...
随机推荐
- maskrcnn-benchmark错误:ImportError: cannot import name rnn_compat
错误: from apex import amp File "build/bdist.linux-x86_64/egg/apex/__init__.py", line 5, in ...
- Delphi 方法的声明
- mysql启动失败,unit not found
1 mysql启动 Failed to start mysqld.service: Unit not found. 2 查询/etc/init.d/下是否存在mysqld ll /etc/init ...
- PXE批量部署安装Linux系统
PXE介绍 1)Preboot Excution Environment 预启动执行环境 2)Intel公司研发 3)基于Client/Server的网络模式,支持远程主机通过网络从远端服务器下载映 ...
- 7. Function Decorators and Closures
A decorator is a callable that takes another function as argument (the decorated function). The deco ...
- iFrame跨域的方式
4种通过iframe跨域与其他页面通信的方式 不同域下的iframe不能进行操作. 1.location.hash: 在url中,http://www.baidu.com#helloword的#hel ...
- Linux基础使用
Linux中,日志所在的位置: /var/log/messages 系统默认的日志 /var/log/secure 记录用户的登录信息 查看日志的方法有很多 :head ...
- Muduo阅读
创建了EventLoop对象的线程是IO线程,其主要功能是运行事件循环EventLoop::loop(), one loop per thread 事件循环必须在IO线程中运行 Reactor关键结构 ...
- bat 读取 ini 配置文件
bat 读取 ini 配置文件 config.ini: abc=abc a=a localpath=D:\local\path .bat: @echo off setlocal enabledelay ...
- L1L2
https://baijiahao.baidu.com/s?id=1595711904189222402&wfr=spider&for=pc https://www.cnblogs.c ...