1. 程式人生 > >Kettle — 原始碼啟動和程式碼結構分析

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:整合測試模組。

相關推薦

Kettle原始碼啟動程式碼結構分析

眾所周知Kettle是一個開源的專案,所有我們有必要把Kettle的原始碼pull下來進行簡單的分析,搞清楚Kettle的執行原理和實現過程。 首先我們需要從Github中將原始碼Pull下來。從Github上的分支可以看到,最新的版本應該是8.1.0.3的版本,而mast

Java架構-(六)整合spring cloud雲服務架構 - 企業雲架構common-service程式碼結構分析

當前的分散式微服務雲架構平臺使用Maven構建,所以common-service的通用服務按照maven構建獨立的系統服務,結構如下: particle-commonservice: spring cloud 系統服務根專案,所有服務專案的根依賴。 particle-commo

CEF3開發者系列之工程程式碼結構

1、環境  版本:cef_binary_3.2171.1901_windows32  工具:cmake-3.5.0-win32-x86、 VS2008及以上均可 2、編譯  下載好CEF的原始碼後,使用Cmake生成對應的Solution,很多地方都有介紹,這邊就不再贅述了

Java B2B2C o2o多使用者商城 springcloud架-企業雲架構common-service程式碼結構分析

當前的分散式微服務雲架構平臺使用Maven構建,所以common-service的通用服務按照maven構建獨立的系統服務,結構如下: particle-commonservice: spring cloud 系統服務根專案,所有服務專案的根依賴。 particle-commonservice-adm

Java B2B2C多使用者商城 springcloud架構- 企業雲架構common-service程式碼結構分析(六)

當前的分散式微服務雲架構平臺使用Maven構建,所以common-service的通用服務按照maven構建獨立的系統服務,結構如下: particle-commonservice: spring cloud 系統服務根專案,所有服務專案的根依賴。 particle-commonservice-adm

u-boot啟動之Makefile結構分析

先進行配置命令: make smdk2410_config 在Makefile檔案中: smdk2410_config : unconfig @$(MKCONFIG) $(@:_config=) arm arm920t smdk2410 NULL s3c24

Java物件建立過程記憶體結構分析

JAVA記憶體分配和管理是JAVA的核心技術之一,在看了尚矽谷宋紅康老師講解的JAVA記憶體知識之後,結合《深入理解JVM這本書》對自己所學的知識進行簡單的總結,寫了這篇日誌。 1.JAVA記憶體分割槽  根據儲存資料的不同,java記憶體通常被劃分為5個區域:程式計數器(

Spring Cloud雲服務- HongHu雲架構common-service程式碼結構分析

當前的分散式微服務雲架構平臺使用Maven構建,所以common-service的通用服務按照maven構建獨立的系統服務,結構如下: particle-commonservice: spring cloud 系統服務根專案,所有服務專案的根依賴。particle-

Spring原始碼閱讀-ApplicationContext體系結構分析

目錄 繼承層次圖概覽 ConfigurableApplicationContext分析 AbstractApplicationContext GenericApplicationContext

HashMap的實現原理底層結構 圖解+原始碼分析

 雜湊表(hash table)也叫散列表,是一種非常重要的資料結構,應用場景及其豐富,許多快取技術(比如memcached)的核心其實就是在記憶體中維護一張大的雜湊表,而HashMap的實現原理也常常出現在各類的面試題中,重要性可見一斑。本文會對java集合框架中的對應實現HashMap的實現原理

Android進階3:Activity原始碼分析(2) —— Activity啟動銷燬流程(8.0)

上篇文章講述了app從啟動建立Activity呼叫onCreate,onStart, onResume方法,這篇文章講述一下Activity啟動的另一個切入點:startActivity方法,啟動Activity。 通過上一篇文章,我們總結一下: 1:A

Elasticsearch原始碼分析 | 單節點的啟動關閉

本文主要簡要介紹Elasticsearch單節點的啟動和關閉流程。Elasticsearch版本:6.3.2 相關文章 1、Google Guice 快速入門 2、Elasticsearch 中的 Guice 3、教你編譯除錯Elasticsearch 6.3.2原始碼 4、El

Android 之 三級快取(記憶體!!!、本地、網路)及記憶體LruCache擴充套件 及原始碼分析--- 學習程式碼講解

一. 三級快取簡介 如上圖所示,目前App中UI介面經常會涉及到圖片,特別是像“今日關注”新聞這類app中,圖片運用的機率十分頻繁。當手機上需要顯示大量圖片類似listView、gridView控制元件並且使用者會上下滑動,即將瀏覽過的圖片又載入一遍,

Flume原始碼分析程式碼結構理解(四)

Flume原始碼涵蓋的內容很多,但大家在讀取Flume原始碼時可以去除枝葉,把握核心部分,可以有效的減輕原始碼分析的工作量。我使用的Flume-NG原始碼的版本為1.6.0,其他版本的原始碼可以參照分析。 根據Flume的基本原理,flume主要由source

[阿里DIN] 深度興趣網路原始碼分析 之 整體程式碼結構

# [阿里DIN] 深度興趣網路原始碼分析 之 整體程式碼結構 [toc] ## 0x00 摘要 Deep Interest Network(DIN)是阿里媽媽精準定向檢索及基礎演算法團隊在2017年6月提出的。其針對電子商務領域(e-commerce industry)的CTR預估,重點在於充分利用/

7.使用EXPLAIN 來分析SQL結構_2

數據行 影響 位置 一行 nbsp temp 使用 null 字段 possible_keys ------ 顯示可能應用在這張表的索引,一個或多個           查詢涉及到的字段上若存在索引,則該索引將被列出,但不一定被實際查詢使用 key -----

博客系統需求分析結構設計

con ont __str__ fields key rim spl etime foreign 一、項目流程 1、搞清楚需求(產品經理)   (1)基於用戶認證組件和Ajax實現登錄驗證(圖片驗證碼)   (2)基於forms組件和Ajax實現註冊功能   (3)

從零開始Rtklib解讀篇-簡單的程式設計理論演算法及結構分析(四)

首先我們來說一說VS常用的除錯技巧,比較常用的內容我會寫在下面。 1、斷點。我就不細說了。 2、條件斷點,在斷點上右鍵,彈出的選單可以選擇條件設定,在找一些問題的時候會比較快一點。我有時會配合靜態變數強行搜尋到error發生前。 3、檢視指標值,監視視窗輸入,比如p,3 ,即可檢視p

從零開始Rtklib解讀篇-簡單的程式設計理論演算法及結構分析(三)

1. argc和argv argc和argv中的arg指的是"引數",首先是一個計算提供的引數到程式,第二個是對字串陣列的指標 argc: 整數,用來統計你執行程式時送給main函式的命令列引數的個數 * argv[ ]: 字串陣列,用來存放指向你

從零開始Rtklib解讀篇-簡單的程式設計理論演算法及結構分析(二)

從bin裡進入。主進入方式為RTKLAUNCH.exe 第一個RTKPLOT右上角的小方塊可以勾選NormalAPs,RTKPOST_MKL,RTKPOST_WIN64, Minimize等選項。通常是第一個。另外64位系統下通常也是選用NormalAPs,RTKPOST_WIN