1. 程式人生 > >Kettle 外掛開發除錯環境搭建(上)

Kettle 外掛開發除錯環境搭建(上)

1. 下載原始碼  https://github.com/pentaho/pentaho-kettle/
2. 下載kettle發行版本 http://community.pentaho.com/projects/data-integration/   (主要是為了獲取依賴的jar包)
以上兩者版本請儘量保持一致。

原始碼的readme檔案中描述了原始碼編譯方法,你可以照著步驟作,此方法需要聯網下載所有的依賴包,一般非常慢,多數情況會出錯。本文所述方法不需要聯網下載依賴包,因為幾乎所有需要下載的jar包已經在發行版中了。

3. 將原始碼拷貝到eclipse的當前workspace目錄下(如/path/to/eclipse/workspace/pentaho-kettle-master)

4. 在當前workspace中新建工程,名稱與剛拷貝的目錄名稱相同(如pentaho-kettle-master)
此時eclipse會自動引入編譯時程式碼目錄,暫時不理會編譯錯誤。
5. 在工程目錄下新建libs目錄(名稱可自己自定義),此目錄用於存放原始碼編譯依賴的jar包,來源如下:
        1) 將kettle發行版本中lib目錄下所有jar包複製到新建的libs目錄下
        2) 將kettle發行版本中libswt目錄下相應平臺的swt.jar複製到新建的libs目錄下(請注意jvm版本,如果系統是 win64,但jvm是32,則要選擇win32下的swt.jar檔案)

        3) 將kettle發行版本中plugins目錄下所有外掛目錄中lib目錄下的jar檔案複製到新建的libs目錄下
        4) 如要消除import中mockito相關錯誤,需要下載mockito-all,並複製到新建的libs目錄下,參考下載地址
http://central.maven.org/maven2/org/mockito/mockito-all/1.9.5/mockito-all-1.9.5.jar
6. 在工程屬性中java build path部分,libraries標籤頁下點選add library,選擇JUnit並確定。然後點選add jars,選擇libs目錄下所有的jar檔案(如果未顯示libs目錄,試試重新整理工程再操作),此時基本上編譯沒問題了。


7. 原始碼中單元測試部分可能有衝突的類名,此時在工程屬性中java build path部分,source標籤頁下,排除相應的檔案即可。

8. 修改工程目錄(原始碼目錄)中的project.launch檔案,重新命名為<工程名>.launch,如pentaho-kettle-master.launch,然後修改內容,將所有"@@@"替換為工程名,如pentaho-kettle-master

9. 在eclipse中重新整理工程,右鍵點選pentaho-kettle-master.launch,選擇run as  工程名,如果工程編譯無錯誤,此時應該可以啟動spoon。

10. 在eclipse 工具欄中debug,run中已經有了相應的launch配置。至此kettle開發除錯環境初步搭建完成。

1.2. 編譯原始碼
將專案載入到eclipse
將kettle專案拷貝到eclipse的workspace目錄下,在eclipse中新建java project,專案名稱和你拷貝過來的kettle資料夾名稱一致

專案匯入到eclipse中會出現一個錯誤,如下圖,將這個檔案的原始碼全部註釋掉

編譯
開啟build.xml, 在右邊的。Outline 點選kettle->run as ->ant build

第一次編譯的時候需要從網上下載幾個檔案,放在C:\Documents and Settings\Administrator\.subfloor,網路不好的話下載會比較慢,也可以直接檔案放在C:\Documents and Settings\Administrator\下。編譯完成後將bin目錄下的.bat檔案拷貝到Kettle目錄下點選Spoon.bat執行,執行成功代表編譯已近通過
用原始碼執行Spoon
Kettle原始碼工程本身可能是在linux64位機器上除錯的,swt配置是linux64的庫,所有在執行原始碼前需要修改成win32的swt,步驟如下:工程à屬性àJava Build Pathàlibrariesàadd jars

然後將linux64的SWT庫刪除

最後開啟src-uiàorg.pentaho.di.ui.spoonàSpoon.java, Run As àjava application
二.原始碼分析
2.1. 修改kettle介面
修改初始化介面
開啟package org.pentaho.di.ui.spoon的Spoon.Java,找到main函式,該main函式為Spoon工具的入口,找到如下語句

Splash splash = new Splash(display);

該語句為spoon初始化顯示的介面,跳到定義Splash.java,下面函式

canvas.addPaintListener(new PaintListener() {
publicvoid paintControl(PaintEvent e) {
String versionText = BaseMessages.getString(PKG, "SplashDialog.Version") + " " + Const.VERSION; //$NON-NLS-1$ //$NON-NLS-2$

StringBuilder sb = new StringBuilder();
String line = null;

try {
BufferedReader reader = new BufferedReader(newInputStreamReader(Splash.class.getClassLoader().getResourceAsStream("org/pentaho/di/ui/core/dialog/license/license.txt")));//$NON-NLS-1$

while((line = reader.readLine()) != null) {
sb.append(line + System.getProperty("line.separator")); //$NON-NLS-1$
}
} catch (Exception ex) {
sb.append(""); //$NON-NLS-1$
Log.warn(BaseMessages.getString(PKG, "SplashDialog.LicenseTextNotFound")); //$NON-NLS-1$
}

String licenseText = sb.toString();
e.gc.drawImage(kettle_image, 0, 0);

// If this is a Milestone or RC release, warn the user
if (Const.RELEASE.equals(Const.ReleaseType.MILESTONE)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.DeveloperRelease") + " - " + versionText; //$NON-NLS-1$ //$NON-NLS-2$
drawVersionWarning(e);
} elseif (Const.RELEASE.equals(Const.ReleaseType.RELEASE_CANDIDATE)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.ReleaseCandidate") + " - " + versionText; //$NON-NLS-1$//$NON-NLS-2$
}
elseif (Const.RELEASE.equals(Const.ReleaseType.PREVIEW)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.PreviewRelease") + " - " + versionText; //$NON-NLS-1$//$NON-NLS-2$
}
elseif (Const.RELEASE.equals(Const.ReleaseType.GA)) {
versionText = BaseMessages.getString(PKG, "SplashDialog.GA") + " - " + versionText; //$NON-NLS-1$//$NON-NLS-2$
}

Font verFont = new Font(e.display, "Helvetica", 11, SWT.BOLD); //$NON-NLS-1$
e.gc.setFont(verFont);
e.gc.drawText(versionText, 290, 205, true);

// try using the desired font size for the license text
int fontSize = 8;
Font licFont = new Font(e.display, "Helvetica", fontSize, SWT.NORMAL); //$NON-NLS-1$
e.gc.setFont(licFont);

// if the text will not fit the allowed space
while (!willLicenseTextFit(licenseText, e.gc)) {
fontSize--;
licFont = new Font(e.display, "Helvetica", fontSize, SWT.NORMAL); //$NON-NLS-1$
e.gc.setFont(licFont); 
}

e.gc.drawText(licenseText, 290, 290, true);
}
});

1. 修改背景圖片
找到ui/image/下面的kettle_splash.png,替換該圖片
2. 修改版本資訊
找到e.gc.drawText(versionText, 290, 205, true); 改為e.gc.drawText("海康威視資料交換平臺V1.0", 290, 205, true);
3. 修改下面的描述性文字
找到e.gc.drawText(licenseText, 290, 290, true);改為e.gc.drawText("作者:海康", 290, 290, true);
4. 預覽效果

相關推薦

Kettle 外掛開發除錯環境搭建

1. 下載原始碼  https://github.com/pentaho/pentaho-kettle/2. 下載kettle發行版本 http://community.pentaho.com/projects/data-integration/   (主要是為了獲取依賴的

Appium+python自動化1-環境搭建

前言    appium可以說是做app最火的一個自動化框架,它的主要優勢是支援android和ios,另外指令碼語言也是支援java和Python。小編擅長Python,所以接下來的教程是appium+python的例項。 學習appium最大的難處在於環境的安裝,

dubbo系列之springboot 除錯環境搭建

前言 本文是dubbo系列的第一篇,在正式講解dubbo的原始碼之前,需要搭建一套dubbo的樣例,用於我們閱讀原始碼以及理解dubbo的核心功能,本文是以springboot為基礎的,其他的通過xml配置的太麻煩了。 版本說明 springboot start

Spring Data 開發環境搭建

是不是 lns utf-8 void ext for 實體類 connect domain 首先咱們先創建一個maven工程 在pom.xml加入以下 依賴 <!--Mysql 驅動包--> <dependency> <

Vue 開發環境搭建 Mac

技術分享 ati bre 官網 運行 install .com oca color 一、初識 由於個人工作原因以及技術需要一個提升,略晚的開始初探Vue ~。~ 二、那麽Vue是什麽呢? 他就是一個前端的框架,特點是數據雙向綁定、組件化。 三、推薦開發環境 四、環

J2EE分布式框架之開發環境部署

springmvc mybatis dubbo j2ee spring 環境搭建: 1.環境準備 1.開發工具: Eclipse IDE(建議使用高一點的版本) 2.JDK版本:JDK1.7 3.項目管理: Maven3.1.1 2.安裝步驟 1.安裝jdk1.7並配置環境變量(相信大家都

JEESZ分布式框架之開發環境部署

說明 設置 package 知識 公司 信息 iso div 輸入 環境搭建: 1.環境準備 1.開發工具: Eclipse IDE(建議使用高一點的版本) 2.JDK版本:JDK1.7 3.項目管理: Maven3.1.1 2.安裝步驟 1.安裝jdk1.7並配置環境變量

嵌入式開發環境搭建 虛擬機實現橋接Ethernet網口 並且通過WIFI進行NAT聯網

war bubuko 搭建服務器 6.4 網線 16.4 聯網 橋接 圖片 背景:   目前手頭上有一塊JZ2440的板子,之前有搭建完整套開發環境,由於虛擬機故障需要從新搭建服務器端,故在此記錄搭建步驟 環境:   Ubuntu16.4   VMWare 12 先行條件:

開發環境搭建lnmp

現在 digi res package .so uri blog 協同 說明 我們的開發環境一般現在時用Linux + Nginx + MySQL(mariaDB) + PHP的組合進行項目的搭建與開發,工欲善其事必先利其器。 搭建環境: Centos7 + mysql

Docker for Windows安裝與Linux+PHP開發環境搭建

Docker for Windows安裝與Linux+PHP開發環境搭建(二) 上一篇講了docker安裝與環境搭建的步驟,這一次主要是介紹過程中遇到的錯誤情形及其錯誤處理方法: 1).執行docker pull local.registry.com:5000/php 或其他連線本地

Docker for Windows安裝與Linux+PHP開發環境搭建

Docker是什麼? 簡單得來說,Docker是一個由GO語言寫的程式執行的“容器”(Linux containers, LXCs); 目前雲服務的基石是作業系統級別的隔離,在同一臺物理伺服器上虛擬出多個主機。Docker則實現了一種應用程式級別的隔離; 它改變我們基本的開發、操作單元,

Spring原始碼分析——除錯環境搭建可能是最省事的構建方法

1. 依賴工具 idea git jdk 1.8 + Gradle 2. 獲取原始碼   從github https://github.com/spring-projects/spring-framework 上 Fork 出屬於自己的倉庫。如果懶得這麼做也可以

SpringMVC 學習 十 SSM環境搭建springMVC檔案配置 springMVC學習三 註解開發環境搭建

SpringMVC檔案配置的詳細過程,可以檢視springMVC環境搭建的註解配置篇《springMVC學習三 註解開發環境搭建》 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns:xsi="http://www.w3.org/2

VSCode外掛開發全攻略開發除錯技巧

更多文章請戳VSCode外掛開發全攻略系列目錄導航。 前言 在介紹完一些比較簡單的內容點之後,我覺得有必要先和大家介紹一些開發中遇到的一些細節問題以及技巧,特別是後面一章節將要介紹WebView的知識,這個坑會比較多,避免大家走彎路。 開發方式 最理想的方式是準備雙顯示器,一個寫程式

Gdal開發環境搭建Java

前言         Gdal:即Geospatial Data Abstraction Library,支援各種各樣的柵格,向量空間資料格式,功能十分強大,這裡就不多說了。下面我們直接來看如何在Eclipse中搭建GDAL開發環境。 Gdal準備

android 開發環境搭建Ubuntu

低版本: Ubuntu 14 sudo apt-get install openjdk-7-jdk sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-

VsCode + node+ vue.js 開發環境搭建

1.安裝最新的 vscode ,這個很容易安裝。 2.要在機器上開發 vue.js 有兩種模式,一種直接用 .js ,這種方式不用 安裝.node  環境,另一種用 webpack, 3.在機器安裝 node node-v10.8.0-x64.msi,在安裝過程中可能會出

微信開發學習總結——微信開發環境搭建轉載

轉自:https://www.cnblogs.com/xdp-gacl/p/5149171.html   目前移動開發處於比較火的的趨勢,很多的開發者都躍躍欲試,目前移動App開發領域主要分為以下幾種型別      我在平時的工作中接觸得比較多的就是基於Android的

Android混合開發環境搭建cordova

開發軟體準備:Android Studio、Node.js、cordova(混合開發框架) 第一步,安裝Node.js,下載Node.js的安裝包,直接安裝即可。之前下載的6.10.3的版本,在dos命令下怎麼也安裝不成功cordova,後來改成6.10.2的版本,安裝正常

Spark Scala IntelliJ IDEA開發環境搭建入門

一、下載安裝IntelliJ IDEA 二、安裝Scala外掛 三、建立Maven工程 填寫完GroupId,ArtifactId後填寫工程名稱,一直下一步,直到工程建立完成。 建立完成後目錄結構如下圖 在main目錄下面建立sca