一 下载官网插件源码demo
kettle资源列表:https://sourceforge.net/projects/pentaho/files/,找到自己需要的版本插件,这里以8.3.0.0-371为例。
解压kettle-sdk-plugin-assembly-8.3.0.0-371.zip,发现下载下来的插件源码中包括了多种类型的插件demo,我们只使用step插件:kettle-sdk-step-plugin。
二 插件源码打包
使用idea导入下载的插件源码kettle-sdk-step-plugin作为一个maven项目,此时项目会报错提示缺少依赖,修改pom.xml,在<name>Pentaho Data Integration SDK Step Plugin</name>这一行后面增加pentaho的仓库信息,增加的配置如下:
<repositories>
<repository>
<id>pentaho-public</id>
<name>Pentaho Public</name>
<url>http://nexus.pentaho.org/content/groups/omni</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
</repositories>
更新maven依赖,此时maven会去http://nexus.pentaho.org/content/groups/omni下载依赖,等待依赖下载完成后,就可以打包了,执行 mvn clean package 打完包后在 target 目录下出现了kettle-sdk-step-plugin-8.3.0.0-371.jar
三 插件集成
在kettle 安装目录的 plugins文件下新建my-step-plugin文件夹,并将kettle-sdk-step-plugin-8.3.0.0-371.jar复制到文件夹下,如下图。
执行Spoon.bat启动kettle,此时已经可以看到我们的demo插件了,如图
新建一个转换,并使用我们的demo step创建一个任务,生成记录并使用demo step增加一列,创建好后保存,启动预览已经可以生成demo插件的列了。如图
四 远程调式
修改Spoon.bat脚本,在if "%PENTAHO_DI_JAVA_OPTIONS%"=="" set PENTAHO_DI_JAVA_OPTIONS="-Xms1024m" "-Xmx2048m" "-XX:MaxPermSize=256m" 后面增加一行debug信息 -Xdebug -Xnoagent -Djava.compiler=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=10001 ,如下图
重新启动kettle,在idea中新建remote ,并修改port为刚才spoon.bat中增加的端口,这里是10001,如下图
运行idea的debug,在相应的代码上打断点,kettle中运行这个转换,就会进入到我们的断点中,可以进行远程调试了。
如果开发新的插件,只需要修改这个例子,并进行远程调试即可。