Kettle — 源碼啓動和代碼結構分析

衆所周知Kettle是一個開源的項目,所有我們有必要把Kettle的源碼pull下來進行簡單的分析,搞清楚Kettle的執行原理和實現過程。

首先我們需要從Github中將源代碼Pull下來。從Github上的分支可以看到,最新的版本應該是8.1.0.3的版本,而master分支最新的應該是9.0的RC版

Kettle源碼地址:https://github.com/pentaho/pentaho-kettle

下載的過程還是比較愉快的,不過打包和源碼運行就比較痛苦了(大多數應該是由於開發環境不同造成的)。這裏我們選擇8.1.0.3版本的,因爲Kettle7之前使用ant進行項目管理,現在脫離maven的項目肯定不適用我們現在開發了。

編譯打包

首先如果我們直接進入項目目錄用maven進行打包,有可能會出現部分Jar下載失敗,下載到一半卡住等等各種情況,看看自己的maven配置有沒有問題,如果沒有問題,重新下載就ok了,這個中間有幾個Zip的包非常的大,有幾百兆。如果一起順利下載完所有的包大概需要一兩個小時。

然後,使用的maven進行打包會出現下面的異常。

網上的方法無非兩種,這裏列一下,但是沒有起到效果。

1)在打包時加上,Dmvn.test.skip=true

2)在pom.xml文件中加入以下代碼

最後我把test相關的類都刪除了,這樣就能成功打包了。

源碼運行

這裏說明一下Idea運行不起了,報錯:NoClassDefFoundException,搞了半天也沒有解決問題。後來換STS啓動這個問題就沒有了,很奇怪。當然下面會遇到另外一個問題,如果我們是windows下跑的源碼,會出現下面這個問題。

這個問題是使用的jar包不對,因爲開發者默認使用linux下的jar包,而我的環境是windows。進行如下修改,將jar更換爲win的就行了。

接下來運行會報spoon.xul找不到的錯誤。

打包完是能運行的,說明代碼是沒問題的,看源代碼知道是通過classloader加載的,類加載器路徑是XXX/XXX/pentaho-kettle/ui/target/classes/,加上文件的相對路徑ROOT_PATH("/") + XUL_FILE_MAIN("ui/xxx.xul")。這個問題暫時想不到好的處理方式,就直接將對應的文件拷貝到對應的目錄了。

接下來在重新運行應該就能將項目跑起來了。

代碼結構分析

如下圖所示,kettle項目下面有八個模塊。

它們代表的意思分別是:

kettle-core:kettle的核心模塊,包括一些數據處理等。

kettle-dbdialog:kettle數據庫連接界面邏輯。

kettle-engine:kettle的引擎,負責執行kettle的具體作業和轉換的邏輯,並會調用core模塊。

kettle-ui-swt:用戶界面模塊,包括用戶界面顯示的xul文件,通過後端代碼編寫的Dialog以及國際化等。

pdi-assemblies:該模塊用於項目的生成,裏面主要包括各個工具啓動的腳本、靜態資源、幫助文檔、組件簡單的事例(ktr/kjb)、第三方包引用等。

pdi-engine-ext:kettle引擎擴展模塊。

pdi-plugins:kettle的核心插件模塊,如果我們要自定義組件,可以參考該模塊的組件。

integrantion:集成測試模塊。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章