Kettle源碼運行環(huán)境如下:
windows10
Kettle 9.3.0.2
Java JDK 11
IntelliJ IDEA 2021.2.2 (Community Edition)
Maven 3.8.1(版本不需要太高 )
導入kettle到IDEA
可通過kettle的GIthub地址獲取 kettle的克隆連接,或直接下載ZIP壓縮包,將kettle導入到IDEA。
配置Maven
打開Preferences - Build、Execution、Deployment - Builder - Maven
配置Maven為自己下載的Maven 3.8.1,配置Maven的Settings.xml文件
kettle的所需依賴包,在國內(nèi)沒有鏡像。需要配置(配置來自kettle源碼使用說明):
D:\mavendata-kettle pentaho-public devreaduser {zIMyJWfHKfoHiBJAVsAgW4E5BcJzR+nhTtgPy0J+/rs=} pentaho-public https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/ * aliyunmaven * ???????????? https://maven.aliyun.com/repository/public central-repository * Central Repository http://central.maven.org/maven2/ pentaho true pentaho-public Pentaho Public https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/ true always true always pentaho-public Pentaho Public https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/ true always true always org.pentaho.maven.plugins com.pentaho.maven.plugins com.github.spotbugs
配置完畢后,右擊根pom - Maven - Reload project,等待Maven下載依賴
構建項目
依賴下載完畢后,點擊IDEA右邊Maven,點擊“M”圖標,運行命令【mvn clean install -DskipTests】,-DskipTests代表跳過測試
打印臺出現(xiàn)一下字樣,代表build已經(jīng)完成了
此時到工程目錄下的/assemblies/core/client/target地址
可以看到kettle的壓縮包pdi-core-ce-9.3.0.0-SNAPSHOT.zip,解壓后,可以看到Spoon.bat文件,在控制臺執(zhí)行定位到解壓目錄,執(zhí)行【spoon.bat】即可在windows環(huán)境下啟動kettle客戶端。
在項目中調(diào)試kettle步驟:
啟動Spoon.java
在以下路徑中找到pentaho-kettle-master/ui/src/main/java/org/pentaho/di/ui/spoon/Spoon.java,右擊,選擇【run ‘Spoon.main()’】,啟動它。
初次運行時,會運行失敗,接下來按下面操作進行解決。
第一個錯誤失敗截圖如下:
java.lang.UnsatisfiedLinkError: Could not load SWT library
解決方法:
修改一下UI 子模塊的中的pom.xml文件改成Windows的swt包
org.eclipse.swt org.eclipse.swt.win32.win32.x86_64 4.3
修改 file ->Project Structure ->Modules ->kettle-ui-swt ->Dependencies 中將如下圖中所示:將windows的swt放在前面,先加載,后面的linux的swt的jar包就不會再加載(這個如果你是在linux系統(tǒng)下的話,就不用修改這些)然后修改 file ->Project Structure ->Modules ->kettle-ui-swt ->Dependencies 中將如下圖中所示:將windows的swt放在前面,先加載,后面的linux的swt的jar包就不會再加載
第二個錯誤:
添加kettle-password-encoder-plugins.xml到/kettle-core/src/main/resources下
第三個錯誤
java.lang.NoClassDefFoundError: com/google/api/client/json/JsonFactory
點擊"Edit Configurations",打開"Run Debug Configurations"界面
VM options:–class-path=“l(fā)ib” -XstartOnFirstThread
Working directory:后面追加 dist
在源碼目錄下新建目錄 dist,在 dist 目錄中新建子目錄 lib 將之前編譯成功的發(fā)布包 zip 中的 ui 目錄解壓至<源碼目錄>\dist 中 將之前編譯成功的發(fā)布包 zip 中的 lib 目錄下的以下 4 個 jar 文件拷貝到<源碼目錄>\lib 中
其中slf4j-nop-1.7.12.jar,需要到遠程倉庫下載:https://repo1.maven.org/maven2/org/slf4j/slf4j-nop/1.7.12/
第四個錯誤:
NoSuchMethodError:找不到方法,大多是jar包沖突導致
第五個錯誤:
代碼結(jié)構分析
kettle-core:kettle的核心模塊,包括一些數(shù)據(jù)處理等。
kettle-dbdialog:kettle數(shù)據(jù)庫連接界面邏輯。
kettle-engine:kettle的引擎,負責執(zhí)行kettle的具體作業(yè)和轉(zhuǎn)換的邏輯,并會調(diào)用core模塊。
kettle-ui-swt:用戶界面模塊,包括用戶界面顯示的xul文件,通過后端代碼編寫的Dialog以及國際化等。
pdi-assemblies:該模塊用于項目的生成,里面主要包括各個工具啟動的腳本、靜態(tài)資源、幫助文檔、組件簡單的事例(ktr/kjb)、第三方包引用等。
pdi-engine-ext:kettle引擎擴展模塊。
pdi-plugins:kettle的核心插件模塊,如果我們要自定義組件,可以參考該模塊的組件。
integrantion:集成測試模塊。
你是否還在尋找穩(wěn)定的海外服務器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機房具備T級流量清洗系統(tǒng)配攻擊溯源,準確流量調(diào)度確保服務器高可用性,企業(yè)級服務器適合批量采購,新人活動首月15元起,快前往官網(wǎng)查看詳情吧