Kettle源碼學習(一)——把Kettle項目跑起來


  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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM