開發kettle插件 環境搭建

開發kettle插件 環境搭建

無所不能的Java系列文章,涵蓋了Java的思想,應用開發,設計模式,程序架構等,通過我的經驗去詮釋Java的強大。

說起Java,真的有點不知道從何說起。Java是一門全領域發展的語言,從基礎的來講有4大塊,Java語法,JDK,JVM,第三方類庫。官方又以面向不同應用的角度,又把JDK分爲JavaME,JavaSE,JavaEE三個部分。Java可以做客戶端界面,可以做中間件,可以做手機系統,可以做應用,可以做工具,可以做遊戲,可以做算法…,Java幾乎無所不能。

在Java的世界裏,Java就是一切。

關於作者

轉載請註明出處:
http://blog.fens.me/java-kettle-plugin-eclipse

kettle-plugin

前言

Kettle一個開源的ETL工具,提供了一套界面操作的解決方案,從而代替原有的程序開發。但有時我們還需要開發自己的插件,來滿足我們的業務需求。Kettle基於Eclipse的架構系統,通過JAVA作爲客戶端的實現。強大的ETL功能,和圖形界面的操作,讓Kettle成爲免費的ETL工具的首選。

目錄

  1. Kettle插件開發介紹
  2. 搭建kettle源代碼環境
  3. 在Eclipse中構建kettle項目
  4. 在Eclipse中構建插件項目
  5. 配置插件到Kettle中
  6. Kettle項目啓動
  7. 在kettle項目集成插件源代碼

1. Kettle插件開發介紹

在我們做ETL工作的時候,在某些項目中往往會遇到一些特別的流程任務,kettle原有的流程處理節點已經不能滿足我們的要求,這時候我們就需要定製流程處理節點了。定製流程節點主要是針對數據的管理、數據的驗證和某些特別文件數據的提取。大家通過查看kettle源代碼,就可以知道怎樣去創建你自己的kettle插件了。

Kettle的插件開發,需要依賴於Kettle的源代碼環境。

2. 搭建kettle源代碼環境

1). 我的系統環境

  • Win7: 64bit desktop
  • Java: 64bit 1.6.0_45

kettle源在svn上面,我們需要下載SVN工具,然後才能下載源代碼。

2). 下載svn工具:Subversion 1.8.3 (Windows 64-bit), 註冊後下載

http://www.collab.net/downloads/subversion

3). 安裝Subversion

4). 下載kettle源代碼

~ D:\workspace\java>svn co http://source.pentaho.org/svnkettleroot/Kettle/tags/4.4.0-stable/ kettle

A    kettle\.directory
A    kettle\.project
A    kettle\cobertura
A    kettle\cobertura\cobertura.jar
A    kettle\cobertura\lib
A    kettle\cobertura\lib\log4j-1.2.9.jar
A    kettle\cobertura\lib\LICENSE
A    kettle\cobertura\lib\javancss.jar
A    kettle\cobertura\lib\junit.jar
A    kettle\cobertura\lib\cpl-v10.html
A    kettle\cobertura\lib\jakarta-oro-2.0.8.jar
A    kettle\cobertura\lib\asm-2.1.jar
A    kettle\cobertura\lib\ccl.jar
A    kettle\src
A    kettle\src\kettle-steps.xml
A    kettle\src\kettle-job-entries.xml
A    kettle\src\kettle-import-rules.xml
A    kettle\src\org
A    kettle\src\org\pentaho
A    kettle\src\org\pentaho\xul
A    kettle\src\org\pentaho\xul\swt
A    kettle\src\org\pentaho\reporting
A    kettle\src\org\pentaho\reporting\plugin
A    kettle\src\org\pentaho\hadoop
A    kettle\src\org\pentaho\hadoop\HadoopCompression.java
A    kettle\src\org\pentaho\di
A    kettle\src\org\pentaho\di\repository
A    kettle\src\org\pentaho\di\repository\kdr
A    kettle\src\org\pentaho\di\repository\kdr\KettleDatabaseRepositorySecurityProvider.java
A    kettle\src\org\pentaho\di\repository\kdr\KettleDatabaseRepositoryCreationHelper.java
A    kettle\src\org\pentaho\di\repository\kdr\KettleDatabaseRepositoryMeta.java
A    kettle\src\org\pentaho\di\repository\kdr\KettleDatabaseRepositoryBase.java
A    kettle\src\org\pentaho\di\repository\kdr\KettleDatabaseRepository.java
A    kettle\src\org\pentaho\di\repository\kdr\delegates
A    kettle\src\org\pentaho\di\repository\kdr\delegates\KettleDatabaseRepositoryBaseDelegate.java

下載的非常慢,不可以忍了。

查看SVN服務器位置:

~ ping source.pentaho.org
正在 Ping source.pentaho.org [74.205.95.173] 具有 32 字節的數據:
來自 74.205.95.173 的回覆: 字節=32 時間=210ms TTL=50
來自 74.205.95.173 的回覆: 字節=32 時間=209ms TTL=50
來自 74.205.95.173 的回覆: 字節=32 時間=211ms TTL=50
來自 74.205.95.173 的回覆: 字節=32 時間=210ms TTL=50

kettle-svn

發現SVN服務器在美國!!換另外一種思路,下載源代碼!

5). 在github上面做了一個clone版

  • a. 在一臺美國的vps通過svn下載代碼。(30s下載完成)
  • b. 在github上面新建一個git項目
  • c. 增加gitignore屏蔽.svn目錄
  • d. 上傳到自己的github的庫裏面
  • e. 在本地的開發環境從github下載代碼
git clone https://github.com/bsspirit/kettle-4.4.0-stable.git

6). 下載完成,執行ant

~ D:\workspace\java\kettle>ant
Buildfile: D:\workspace\java\kettle\build.xml

init:
     [echo] Init...
    [mkdir] Created dir: D:\workspace\java\kettle\build
    [mkdir] Created dir: D:\workspace\java\kettle\classes
    [mkdir] Created dir: D:\workspace\java\kettle\classes\META-INF
    [mkdir] Created dir: D:\workspace\java\kettle\classes-ui
    [mkdir] Created dir: D:\workspace\java\kettle\classes-ui\ui
    [mkdir] Created dir: D:\workspace\java\kettle\classes-core
    [mkdir] Created dir: D:\workspace\java\kettle\classes-db
    [mkdir] Created dir: D:\workspace\java\kettle\classes-dbdialog
    [mkdir] Created dir: D:\workspace\java\kettle\testClasses
    [mkdir] Created dir: D:\workspace\java\kettle\lib
    [mkdir] Created dir: D:\workspace\java\kettle\distrib
    [mkdir] Created dir: D:\workspace\java\kettle\osx-distrib
    [mkdir] Created dir: D:\workspace\java\kettle\docs\api
    [mkdir] Created dir: D:\workspace\java\kettle\webstart
    [mkdir] Created dir: D:\workspace\java\kettle\junit
    [mkdir] Created dir: D:\workspace\java\kettle\pdi-ce-distrib
     [echo] Revision set to r1

compile-core:
     [echo] Compiling Kettle CORE...
    [javac] Compiling 196 source files to D:\workspace\java\kettle\classes-core

copy-core:
     [echo] Copying core images etc to classes directory...
     [copy] Copying 73 files to D:\workspace\java\kettle\classes-core

kettle-core:
     [echo] Generating the Kettle core library kettle-core.jar ...
      [jar] Building jar: D:\workspace\java\kettle\lib\kettle-core.jar

compile-db:
     [echo] Compiling Kettle DB...
    [javac] Compiling 66 source files to D:\workspace\java\kettle\classes-db

copy-db:
     [echo] Copying db images etc to classes-db directory...
     [copy] Copying 9 files to D:\workspace\java\kettle\classes-db

kettle-db:
     [echo] Generating the Kettle DB library kettle-db.jar ...
      [jar] Building jar: D:\workspace\java\kettle\lib\kettle-db.jar

compile:
     [echo] Compiling Kettle...
    [javac] Compiling 1138 source files to D:\workspace\java\kettle\classes
    [javac] D:\workspace\java\kettle\src\org\pentaho\di\job\entry\JobEntryDialogInterface.java:37: 警告:編碼 GBK 的不可
映射字符
    [javac]  *
	If the user changed any settings, the JobEntryInterface object抯 揷hanged?flag must be set to true
[javac] ^
[javac] D:\workspace\java\kettle\src\org\pentaho\di\job\entry\JobEntryDialogInterface.java:43: 警告:編碼 GBK 的不可
映射字符
[javac] *The JobEntryInterface object抯 揷hanged?flag must be set to the value it had at the time the dialog o
pened
	
[javac] ^ [javac] D:\workspace\java\kettle\src\org\pentaho\di\job\entry\JobEntryInterface.java:75: 警告:編碼 GBK 的不可映射字 符 [javac] * public void loadXML(? [javac] ^ [javac] D:\workspace\java\kettle\src\org\pentaho\di\job\entry\JobEntryInterface.java:81: 警告:編碼 GBK 的不可映射字 符 [javac] * public void saveRep(? [javac] ^ [javac] D:\workspace\java\kettle\src\org\pentaho\di\job\entry\JobEntryInterface.java:89: 警告:編碼 GBK 的不可映射字 符 [javac] * public void loadRep(? [javac] ^ [javac] D:\workspace\java\kettle\src\org\pentaho\di\trans\steps\mondrianinput\MondrianHelper.java:121: 警告:[deprec ation] mondrian.olap.Connection 中的 execute(mondrian.olap.Query) 已過時 [javac] result = connection.execute(query); [javac] ^ [javac] 6 警告copy: [echo] Copying images etc to classes directory... [copy] Copying 1884 files to D:\workspace\java\kettle\classes [copy] Copying 1 file to D:\workspace\java\kettle\classes\META-INF kettle: [echo] Generating the Kettle library kettle-engine.jar ... [jar] Building jar: D:\workspace\java\kettle\lib\kettle-engine.jar compile-dbdialog: [echo] Compiling Kettle DB... [javac] Compiling 5 source files to D:\workspace\java\kettle\classes-dbdialog copy-dbdialog: [echo] Copying db images etc to classes-dbdialog directory... [copy] Copying 23 files to D:\workspace\java\kettle\classes-dbdialog kettle-dbdialog: [echo] Generating the Kettle DB library kettle-dbdialog.jar ... [jar] Building jar: D:\workspace\java\kettle\lib\kettle-dbdialog.jar compile-ui: [echo] Compiling Kettle UI... [javac] Compiling 585 source files to D:\workspace\java\kettle\classes-ui [javac] D:\workspace\java\kettle\src-ui\org\pentaho\di\ui\job\entries\getpop\JobEntryGetPOPDialog.java:2102: 警告: 編碼 GBK 的不可映射字符 [javac] mb.setMessage("Veuillez svp donner un nom 錕?cette entr錕絜 t錕絚he!"); [javac] ^ [javac] 1 警告 [copy] Copying 200 files to D:\workspace\java\kettle\classes-ui [copy] Copying 379 files to D:\workspace\java\kettle\classes-ui\ui kettle-ui: [echo] Generating the Kettle library kettle-ui-swt.jar ... [jar] Building jar: D:\workspace\java\kettle\lib\kettle-ui-swt.jar antcontrib.download-check: antcontrib.download: [mkdir] Created dir: C:\Users\Administrator\.subfloor\tmp [get] Getting: http://downloads.sourceforge.net/ant-contrib/ant-contrib-1.0b3-bin.zip [get] To: C:\Users\Administrator\.subfloor\tmp\antcontrib.zip [get] http://downloads.sourceforge.net/ant-contrib/ant-contrib-1.0b3-bin.zip permanently moved to http://downloads .sourceforge.net/project/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3-bin.zip [get] http://downloads.sourceforge.net/project/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3-bin.zip moved to ht tp://jaist.dl.sourceforge.net/project/ant-contrib/ant-contrib/1.0b3/ant-contrib-1.0b3-bin.zip [unzip] Expanding: C:\Users\Administrator\.subfloor\tmp\antcontrib.zip into C:\Users\Administrator\.subfloor\tmp [copy] Copying 5 files to C:\Users\Administrator\.subfloor\ant-contrib install-antcontrib: compile-plugins-standalone: [echo] Compiling Kettle Plugin kettle-gpload-plugin... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-gpload-plugin\bin\classes [javac] Compiling 5 source files to D:\workspace\java\kettle\src-plugins\kettle-gpload-plugin\bin\classes [copy] Copying 7 files to D:\workspace\java\kettle\src-plugins\kettle-gpload-plugin\bin\classes [echo] Compiling Kettle Plugin kettle-palo-plugin... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-palo-plugin\bin\classes [javac] Compiling 17 source files to D:\workspace\java\kettle\src-plugins\kettle-palo-plugin\bin\classes [copy] Copying 28 files to D:\workspace\java\kettle\src-plugins\kettle-palo-plugin\bin\classes [echo] Compiling Kettle Plugin kettle-hl7-plugin... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-hl7-plugin\bin\classes [javac] Compiling 13 source files to D:\workspace\java\kettle\src-plugins\kettle-hl7-plugin\bin\classes [copy] Copying 14 files to D:\workspace\java\kettle\src-plugins\kettle-hl7-plugin\bin\classes [echo] Compiling Kettle Plugin market... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\market\bin\classes [javac] Compiling 9 source files to D:\workspace\java\kettle\src-plugins\market\bin\classes [javac] D:\workspace\java\kettle\src-plugins\market\src\org\pentaho\di\core\market\Market.java:533: 警告:[deprecati on] org.pentaho.di.ui.core.gui.GUIResource 中的 reload() 已過時 [javac] GUIResource.getInstance().reload(); [javac] ^ [javac] 1 警告 [copy] Copying 2 files to D:\workspace\java\kettle\src-plugins\market\bin\classes compile-plugins: kettle-plugins-jar-standalone: [echo] Generating the Kettle Plugin Jar ${plugin} ... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-gpload-plugin\dist [jar] Building jar: D:\workspace\java\kettle\src-plugins\kettle-gpload-plugin\dist\kettle-gpload-plugin.jar [echo] Generating the Kettle Plugin Jar ${plugin} ... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-palo-plugin\dist [jar] Building jar: D:\workspace\java\kettle\src-plugins\kettle-palo-plugin\dist\kettle-palo-plugin.jar [echo] Generating the Kettle Plugin Jar ${plugin} ... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-hl7-plugin\dist [jar] Building jar: D:\workspace\java\kettle\src-plugins\kettle-hl7-plugin\dist\kettle-hl7-plugin.jar [echo] Generating the Kettle Plugin Jar ${plugin} ... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\market\dist [jar] Building jar: D:\workspace\java\kettle\src-plugins\market\dist\market.jar kettle-plugins-jar: kettle-plugins-standalone: [echo] Staging the Kettle plugin kettle-gpload-plugin ... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-gpload-plugin\bin\stage\kettle-gpload-plugin [copy] Copying 1 file to D:\workspace\java\kettle\src-plugins\kettle-gpload-plugin\bin\stage\kettle-gpload-plugin [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-gpload-plugin\bin\stage\kettle-gpload-plugin\lib [echo] Staging the Kettle plugin kettle-palo-plugin ... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-palo-plugin\bin\stage\kettle-palo-plugin [copy] Copying 1 file to D:\workspace\java\kettle\src-plugins\kettle-palo-plugin\bin\stage\kettle-palo-plugin [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-palo-plugin\bin\stage\kettle-palo-plugin\lib [copy] Copying 1 file to D:\workspace\java\kettle\src-plugins\kettle-palo-plugin\bin\stage\kettle-palo-plugin\lib [echo] Staging the Kettle plugin kettle-hl7-plugin ... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-hl7-plugin\bin\stage\kettle-hl7-plugin [copy] Copying 1 file to D:\workspace\java\kettle\src-plugins\kettle-hl7-plugin\bin\stage\kettle-hl7-plugin [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\kettle-hl7-plugin\bin\stage\kettle-hl7-plugin\lib [copy] Copying 10 files to D:\workspace\java\kettle\src-plugins\kettle-hl7-plugin\bin\stage\kettle-hl7-plugin\lib [echo] Staging the Kettle plugin market ... [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\market\bin\stage\market [copy] Copying 1 file to D:\workspace\java\kettle\src-plugins\market\bin\stage\market [mkdir] Created dir: D:\workspace\java\kettle\src-plugins\market\bin\stage\market\lib [copy] Copying 1 file to D:\workspace\java\kettle\src-plugins\market\bin\stage\market kettle-plugins: compileTests: [echo] Compiling Kettle tests... [javac] Compiling 122 source files to D:\workspace\java\kettle\testClasses kettle-test: [echo] Generating the Kettle library kettle-test.jar ... [jar] Building jar: D:\workspace\java\kettle\lib\kettle-test.jar distrib-nodeps: [echo] Construct the distribution package... [copy] Copying 34 files to D:\workspace\java\kettle\distrib [copy] Copied 10 empty directories to 2 empty directories under D:\workspace\java\kettle\distrib [mkdir] Created dir: D:\workspace\java\kettle\distrib\lib [copy] Copying 1 file to D:\workspace\java\kettle\distrib\lib [copy] Copying 1 file to D:\workspace\java\kettle\distrib\lib [copy] Copying 1 file to D:\workspace\java\kettle\distrib\lib [copy] Copying 1 file to D:\workspace\java\kettle\distrib\lib [copy] Copying 1 file to D:\workspace\java\kettle\distrib\lib [copy] Copying 1 file to D:\workspace\java\kettle\distrib\lib [mkdir] Created dir: D:\workspace\java\kettle\distrib\libext [copy] Copying 214 files to D:\workspace\java\kettle\distrib\libext [mkdir] Created dir: D:\workspace\java\kettle\distrib\libswt [copy] Copying 21 files to D:\workspace\java\kettle\distrib\libswt [mkdir] Created dir: D:\workspace\java\kettle\distrib\plugins [copy] Copying 15 files to D:\workspace\java\kettle\distrib\plugins [copy] Copied 11 empty directories to 3 empty directories under D:\workspace\java\kettle\distrib\plugins [copy] Copying 1 file to D:\workspace\java\kettle\distrib\plugins [copy] Copied 2 empty directories to 1 empty directory under D:\workspace\java\kettle\distrib\plugins [copy] Copying 2 files to D:\workspace\java\kettle\distrib\plugins [copy] Copying 11 files to D:\workspace\java\kettle\distrib\plugins [copy] Copying 2 files to D:\workspace\java\kettle\distrib\plugins [copy] Copied 2 empty directories to 1 empty directory under D:\workspace\java\kettle\distrib\plugins [mkdir] Created dir: D:\workspace\java\kettle\distrib\ui [copy] Copying 387 files to D:\workspace\java\kettle\distrib\ui [mkdir] Created dir: D:\workspace\java\kettle\distrib\docs [copy] Copying 354 files to D:\workspace\java\kettle\distrib\docs [mkdir] Created dir: D:\workspace\java\kettle\distrib\pwd [copy] Copying 6 files to D:\workspace\java\kettle\distrib\pwd [mkdir] Created dir: D:\workspace\java\kettle\distrib\launcher [copy] Copying 3 files to D:\workspace\java\kettle\distrib\launcher [mkdir] Created dir: D:\workspace\java\kettle\distrib\simple-jndi [copy] Copying 1 file to D:\workspace\java\kettle\distrib\simple-jndi [mkdir] Created dir: D:\workspace\java\kettle\distrib\samples [mkdir] Created dir: D:\workspace\java\kettle\distrib\samples\transformations [mkdir] Created dir: D:\workspace\java\kettle\distrib\samples\jobs [mkdir] Created dir: D:\workspace\java\kettle\distrib\samples\transformations\output [mkdir] Created dir: D:\workspace\java\kettle\distrib\samples\jobs\output [copy] Copying 248 files to D:\workspace\java\kettle\distrib\samples distrib: default: BUILD SUCCESSFUL Total time: 1 minute 29 seconds

雖然,有一些警告,但是build成功!!

3. 在Eclipse中構建kettle項目

7). 把kettle項目,導入到Eclipse中。

kettle-eclipse

4. 在Eclipse中構建插件項目

8). 構建插件項目:我可以基於一個模板去構建插件。

下載kettle-TemplatePlugin項目

wget http://www.ahuoo.com/download/TemplateStepPlugin.rar

9). 解壓後導入到eclipse工程:kettle-TemplatePlugin

複製類庫

  • 從kettle項目中,複製lib的*.jar到kettle-TemplatePlugin中的libext目錄
  • 從kettle項目中,複製libswt/win64的swt.js到kettle-TemplatePlugin中的libswt/win64目錄

10). 剛纔複製的類庫加入項目依賴

kettle-eclipse-template

11). 在kettle-TemplatePlugin項目,執行ant


~ D:\workspace\java\kettle-TemplatePlugin>ant
Buildfile: D:\workspace\java\kettle-TemplatePlugin\build.xml

init:
     [echo] Init...

compile:
     [echo] Compiling Jasper Reporting Plugin...
    [javac] D:\workspace\java\kettle-TemplatePlugin\build.xml:40: warning: 'includeantruntime' was not set, defaulting t
o build.sysclasspath=last; set to false for repeatable builds

copy:
     [echo] Copying images etc to classes directory...

lib:
     [echo] Generating the Jasper Reporting library TemplateStepPlugin.jar ...
      [jar] Building jar: D:\workspace\java\kettle-TemplatePlugin\lib\TemplateStepPlugin.jar

distrib:
     [echo] Copying libraries to distrib directory...
     [copy] Copying 1 file to D:\workspace\java\kettle-TemplatePlugin\distrib

deploy:
     [echo] deploying plugin...

default:

BUILD SUCCESSFUL
Total time: 0 seconds

12). 修改distrib目錄的文件

  • icon.png:圖標文件
  • plugin.xml: 插件的配置文件(4.4以後的版本,可以去掉)
  • TemplateStepPlugin.jar:是通過ant生成的文件

5. 配置插件到Kettle中

13). 把kettle-TemplatePlugin發佈到kettle中

a. 在kettle是工程增加2個目錄


~ mkdir D:\workspace\java\kettle\distrib\plugins\steps\myPlugin
~ mkdir D:\workspace\java\kettle\plugins\steps\myPlugin

b. 修改kettle-TemplatePlugin的build.xml文件


<property name="deploydir" location="D:\workspace\java\kettle\distrib\plugins\steps\myPlugin"/>
<property name="projectdir" location="D:\workspace\java\kettle\plugins\steps\myPlugin"/>

<fileset dir="${libswt}/win64/" includes="*.jar"/>

<target name="deploy" depends="distrib" description="Deploy distribution..." >
<echo>deploying plugin...</echo>
<copy todir="${deploydir}">
<fileset dir="${distrib}" includes="**/*.*"/>
</copy>

<copy todir="${projectdir}">
<fileset dir="${distrib}" includes="**/*.*"/>
</copy>
</target>

c. kettle-TemplatePlugin項目執行ant


D:\workspace\java\kettle-TemplatePlugin>ant
Buildfile: D:\workspace\java\kettle-TemplatePlugin\build.xml

init:
     [echo] Init...

compile:
     [echo] Compiling Jasper Reporting Plugin...
    [javac] D:\workspace\java\kettle-TemplatePlugin\build.xml:43: warning: 'includeantruntime' was not set, defaulting t
o build.sysclasspath=last; set to false for repeatable builds

copy:
     [echo] Copying images etc to classes directory...

lib:
     [echo] Generating the Jasper Reporting library TemplateStepPlugin.jar ...

distrib:
     [echo] Copying libraries to distrib directory...

deploy:
     [echo] deploying plugin...
     [copy] Copying 3 files to D:\workspace\java\kettle\distrib\plugins\steps\myPlugin
     [copy] Copying 6 files to D:\workspace\java\kettle\distrib\plugins\steps\myPlugin
     [copy] Copying 3 files to D:\workspace\java\kettle\plugins\steps\myPlugin

default:

BUILD SUCCESSFUL
Total time: 0 seconds

14). 在kettle中查看目錄:D:\workspace\java\kettle\distrib\plugins\steps\myPlugin

kettle-dist

kettle-TemplatePlugin項目的3個文件,已經被放到了正確的位置

6. 命令行項目啓動

15). 命令行啓動kettle
a. 修改Spoon啓動命令,不開啓新窗口,直接以JAVA運行


~ vi D:\workspace\java\kettle\distrib\Spoon.bat

@echo on
REM start "Spoon" "%_PENTAHO_JAVA%" %OPT% -jar launcher\launcher.jar -lib ..\%LIBSPATH% %_cmdline%
java %OPT% -jar launcher\launcher.jar -lib ..\%LIBSPATH% %_cmdline%

b. 運行Spoon.bat命令


~ D:\workspace\java\kettle\distrib>Spoon.bat

DEBUG: Using JAVA_HOME
DEBUG: _PENTAHO_JAVA_HOME=D:\toolkit\java\jdk6
DEBUG: _PENTAHO_JAVA=D:\toolkit\java\jdk6\bin\javaw

D:\workspace\java\kettle\distrib>REM start "Spoon" "D:\toolkit\java\jdk6\bin\javaw" "-Xmx512m" "-XX:MaxPermSize=256m" "-
Djava.library.path=libswt\win64" "-DKETTLE_HOME=" "-DKETTLE_REPOSITORY=" "-DKETTLE_USER=" "-DKETTLE_PASSWORD=" "-DKETTLE
_PLUGIN_PACKAGES=" "-DKETTLE_LOG_SIZE_LIMIT=" -jar launcher\launcher.jar -lib ..\libswt\win64

D:\workspace\java\kettle\distrib>java "-Xmx512m" "-XX:MaxPermSize=256m" "-Djava.library.path=libswt\win64" "-DKETTLE_HOM
E=" "-DKETTLE_REPOSITORY=" "-DKETTLE_USER=" "-DKETTLE_PASSWORD=" "-DKETTLE_PLUGIN_PACKAGES=" "-DKETTLE_LOG_SIZE_LIMIT="
-jar launcher\launcher.jar -lib ..\libswt\win64
INFO  21-09 12:26:35,717 - Spoon - Logging goes to file:///C:/Users/ADMINI~1/AppData/Local/Temp/spoon_0042f442-2276-11e3
-bf49-6be1282e1ee0.log
INFO  21-09 12:26:36,655 - Spoon - 要求資源庫
INFO  21-09 12:26:36,795 - RepositoriesMeta - Reading repositories XML file: C:\Users\Administrator\.kettle\repositories
.xml
INFO  21-09 12:26:37,783 - Version checker - OK

16). 查看kettle-TemplatePlugin 插件
kettle-debug1

7. 在kettle項目集成插件源代碼

17). 通過Eclipse的 link source功能,連接kettle-TemplatePlugin項目
a. 在kettle項目中,選擇link source
kettle-link-source

b. 在kettle項目中編程
kettle-source

18). 通過Eclipse啓動kettle
a. 在Eclipse中配置啓動Main Class: org.pentaho.di.ui.spoon.Spoon
kettle-run1

b.增加64位的swt.jar類庫
kettle-run2

c. 在Eclipse中啓動kettle
kettle-run3

19). 通過Eclipse調用kettle-TemplatePlugin
a. 修改TemplateStepDialog.java,找到open方法,增加一行輸出


public String open() { 
System.out.println(“Open a dialog!!!”);

...
}

b. 在Eclipse中,通過debug啓動:org.pentaho.di.ui.spoon.Spoon
雙點Template Plugin的圖標,看到日誌顯示”Open a dialog!!!“

kettle-debug1

這樣我們就構建好了,kettle插件的開發環境。接下來,我們就可以進行插件開發了!!

轉載請註明出處:
http://blog.fens.me/java-kettle-plugin-eclipse

This entry was posted in Dataguru作業JAVA語言實踐

發佈了16 篇原創文章 · 獲贊 11 · 訪問量 15萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章