開發kettle插件 環境搭建
無所不能的Java系列文章,涵蓋了Java的思想,應用開發,設計模式,程序架構等,通過我的經驗去詮釋Java的強大。
說起Java,真的有點不知道從何說起。Java是一門全領域發展的語言,從基礎的來講有4大塊,Java語法,JDK,JVM,第三方類庫。官方又以面向不同應用的角度,又把JDK分爲JavaME,JavaSE,JavaEE三個部分。Java可以做客戶端界面,可以做中間件,可以做手機系統,可以做應用,可以做工具,可以做遊戲,可以做算法…,Java幾乎無所不能。
在Java的世界裏,Java就是一切。
關於作者
- 張丹(Conan), 程序員Java,R,PHP,Javascript
- weibo:@Conan_Z
- blog: http://blog.fens.me
- email: [email protected]
轉載請註明出處:
http://blog.fens.me/java-kettle-plugin-eclipse
前言
Kettle一個開源的ETL工具,提供了一套界面操作的解決方案,從而代替原有的程序開發。但有時我們還需要開發自己的插件,來滿足我們的業務需求。Kettle基於Eclipse的架構系統,通過JAVA作爲客戶端的實現。強大的ETL功能,和圖形界面的操作,讓Kettle成爲免費的ETL工具的首選。
目錄
- Kettle插件開發介紹
- 搭建kettle源代碼環境
- 在Eclipse中構建kettle項目
- 在Eclipse中構建插件項目
- 配置插件到Kettle中
- Kettle項目啓動
- 在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
發現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中。
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). 剛纔複製的類庫加入項目依賴
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-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 插件
7. 在kettle項目集成插件源代碼
17). 通過Eclipse的 link source功能,連接kettle-TemplatePlugin項目
a. 在kettle項目中,選擇link source
18). 通過Eclipse啓動kettle
a. 在Eclipse中配置啓動Main Class: org.pentaho.di.ui.spoon.Spoon
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插件的開發環境。接下來,我們就可以進行插件開發了!!