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
