Pentaho Kettle 8.3 源码编译打包及 Debug 调试运行(图文教程)

本手册描述了开源 ETL 工具 Kettle 8.3 源码编译打包及 Debug 调试运行的详细步骤。

本手册编写的目的主要为了应对以下场景:在使用开源的 Kettle 过程中如有个性化需求需要自定义部分功能模块,或者发现系统 Bug 且官方未及时提供修复时,我们需要修改源码并且重新编译打包运行。更多的时候我们需要通过 Debug 调试运行的方式来排查问题。

版权声明:本文为「微酷网」的原创文章,转载请附上原文出处链接及本声明。
原文链接:https://weiku.co/article/431/
CSDN:https://blog.csdn.net/ifu25/article/details/103239489

1、环境要求

[scode type=“green”]本手册基于 Win10 64 位操作系统编写,未在 Mac/Linux 上进行验证测试。[/scode]

以下各软件的安装及配置不在本手册范围内,请自行查阅相关文档。

  • Java JDK 8
  • Intellij IDEA 2018.3
  • Maven 3.3.9 (经测试最新版3.6.2无法正常导入源码)
  • Git

2、源码下载

Pentaho Kettle 官方仓库:https://github.com/pentaho/pentaho-kettle

强烈建议选择和下载的发布版本一致的源码分支,本手册以 8.3 为例编写。

2019112514520.png

1) 克隆源码:

打开命令行工具,定位到要存储源码的路径,使用以下 Git 命令克隆源码,并指定 8.3 分支(克隆的目的是为了以后可以同步更新)

git clone -b 8.3 https://github.com/pentaho/pentaho-kettle.git

2) 下载官方的 maven settings.xml

此文件定义了 kettle 依赖的 pentaho 仓库地址等,下载后存放在任意位置,后面会用到。

右键点此另存为

3、IDEA 导入项目

  1. 打开IDEA,选择【Import Project

2019112514554.png

  1. 定位到源码所在目录点击【ok

20191125145552.png

  1. 选择 Maven 点击 【Next

20191125145633.png

  1. 勾选【Import Maven projects automatically】项,然后点击【Environment settings

2019112514579.png

  1. 在弹出的【Maven environment】窗口中,选择 Maven 3.3.9 所在路径,勾选【User settings file】后面的【Override】,然后选择之前下载的 settings.xml,后面的【Local repository】为 Maven 的缓存路径,可以修改也可以默认。修改完成后点击【OK】,然后点击【Next

20191125145929.png

  1. 在【Import Project】窗口直接点击【Next

20191125145954.png

  1. 在【Import Project】窗口勾选仅有的【org.pentaho.di:pdi:8.3.0.0】后点击【Next

2019112515028.png

  1. 如果之前没有配置过 JDK,那么先点击新增按钮选择 JDK 8 的路径,选择 JDK 8 后点击【Next

2019112515153.png

  1. 项目名称和位置不用修改,直接点击【Next

20191125_150928.png

  1. 之后会打开 IDEA 的主窗口,这时需要联接互联网下载项目所依赖的 jar 包,这个过程可能需要很长时间,所以耐心等待(可能几个小时时间)。可以点击状态栏的消息查看依赖的加载过程(但看不到进度)。

20191125_151014.png

  1. 导入完成后如下图

20191125_151021.png

4、编译打包

通过 IDEATerminal 运行以下命令进行编译。

mvn clean install -DskipTests

20191125_151112.png

打包过程仍会下载大量依赖文件,请耐心等待。

20191125_151135.png

如果运气好的话,编译完成如下图,如果运行不好可能会出现条种问题,大多数是网络问题造成的,重新运行命令再试。

20191125_151151.png

最终编译打包后的文件为:<源码目录>\assemblies\pdi-ce\target\pdi-ce-8.3.0.0-SNAPSHOT.zip

20191125_151214.png

5、Debug 调试运行

IDEA 中打开文件:<源码目录>\ui\src\main\java\org\pentaho\di\ui\spoon\Spoon.java,点击 class 前面的【运行】按钮启动项目

20191125_151331.png

这时会启动失败,不过 IDEA 会自动添加一个启动配置,点击工具栏上的启动配置【Spoon】然后点击【Edit Configurations

20191125_152440.png

在打开的【Run/Debug Configurations】窗口中进行以下设置:

  • VM options-Djava.ext.dirs="lib"
  • Working directory:后面追加 dist

20191125_152630.png

在源码目录下新建目录 dist,在 dist 目录中新建子目录 lib
将之前编译成功的发布包 zip 中的 ui 目录解压至<源码目录>\dist
将之前编译成功的发布包 zip 中的 lib 目录下的以下 4jar 文件拷贝到<源码目录>\lib 中:

dom4j-2.1.1.jar
jaxen-1.1.6.jar
slf4j-api-1.7.7.jar
slf4j-nop-1.7.7.jar

Kettle发布包默认没有提示连接 Sql Server 数据库的驱动,如果需要使用 Sql Server 数据库需要从网上下载 MSSQL 驱动【mssql-jdbc-7.4.1.jre8.jar】放上述目录。

20191125_152832.png

20191125_152951.png

打开:<源码目录>\ui\pom.xml,搜索内容:

<dependency>
  <groupId>org.eclipse.swt</groupId>
  <artifactId>org.eclipse.swt.gtk.linux.x86_64</artifactId>
</dependency>

替换为:

<dependency>
  <groupId>org.eclipse.swt</groupId>
  <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>
  <version>4.6</version>
</dependency>

20191125_153125.png

IDEA 中打开菜单【File - Project Structure】(也可以直接按快捷键:Ctrl+Alt+Shift+S)
在弹出的【Project Structrue】窗口中左侧选择【Modules】,然后在中间选择【kettle-ui-swt】模块,然后在右侧切换到【Dependencies】标签页,拖动右侧滚动条至大约快到底部的位置,找到【Maven:org.eclipse.swt:org.eclipse.swt.win32.win32.x86_64:4.6】,然后通过鼠标点击并拖动的方式将其移动到【Maven:org.eclipse.swt:org.eclipse.swt.gtk.linux.x86_64:4.6】的前面,然后点击【ok】按钮。

20191125_153228.png

配置完成,点击工具栏的启动按钮启动 Spoon,稍等片刻,将打开 Kettle 界面。
最终 Debug 调试启动界面:

20191125_153337.png

如有需要,可找到对应的代码文件添加断点进行单步调试,以便排查问题。此文档不再展开描述。

6、常见问题

1、IDEA 导入项目失败

20191125_153554.png

解决方案:

可能的原因是使用了高版本的 Maven,切换底版本(建议3.3.9)重试。

2、Failed to load class “org.slf4j.impl.StaticLoggerBinder”

20191125_153624.png

解决方案:

缺少 slf4j-api-1.7.7.jarslf4j-nop-1.7.7.jar 这两个包。

3、编译过程中下载大文件网络出错

20191125_153653.png

解决方案:

多试几次,或者自己从 Pentaho 官方仓库找到下载失败的下载文件下载后放到 Maven 缓存目录中。
如下载:pentaho-big-data-plugin-8.3.0.0-20191113.103442-390.zip
放到:D:\Maven\Repository\pentaho\pentaho-big-data-plugin\8.3.0.0-SNAPSHOT\

4、Cant’t load library:C:\Users\Admin.swt\lib\win32\x86_64\swt-gtk.dll

20191125_153852.png

解决方案:

确认 kettle-ui-swt 项目依赖项中 winlinxswt 包的加载顺序。
org.eclipse.swt.win32.win32.x86_64 需移动到 org.eclipse.swt.gtk.linux.x86_64 的前面。

需要注意:每次 Maven 重新 Import 后调整过的顺序会被还原,需要再次手动调整。

5、各种 ClassNotFoundException

可能会遇到各种各样的 ClassNotFoundException,遇到这个错就查看一下缺少哪个 jar 包,从发布包的 lib 目录中搜索找到需要的 jar 包后拷贝到<源码目录>\dist\lib即可。

比如微酷被这个异常折磨了好久:
20191125_154331.png

7、插件

比如 json 输出/输出现在是以插件的方式运行的,默认调试启动的 Kettle 是没有 JSON 的,调试运行插件的方法也很简单。

dist 目录下新建 plugins 目录,然后从编译的发布包中解压出 plugins 中对应的插件放到这个目录中即可。

20191125154747803.png

放上插件后调试运行可能又会报各种 ClassNotFoundException,不要着急,按上面讲的解决方案慢慢处理。

  • 8
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 14
    评论
### 回答1: 无法解析pentaho-kettle:kettle-engine:8.3.0.18-1112的问题可能是由于以下几个原因: 1. 版本号错误或不存在:请确认你所指定的版本号是否正确,并且该版本是否存在于下载源中。您可以尝试使用其他版本或更新的版本号来解决此问题。 2. 依赖关系错误:pentaho-kettle:kettle-engine可能依赖于其他库或组件。请检查您的项目配置文件中的依赖关系,并确保所有的依赖项都已正确声明。 3. 下载源配置错误:请检查项目的下载源配置,确保您可以访问和下载该库。您可以尝试更改下载源地址或使用其他可用的下载源。 4. 网络问题:如果您无法访问下载源或网络连接不稳定,可能会导致解析库的问题。请确保您的网络连接正常,并尝试重新解析该库。 如果您仍然无法解决此问题,请尝试在相关的开发社区或论坛上提问,以获得更专业的帮助和支持。 ### 回答2: 无法解决pentaho-kettle:kettle-engine:8.3.0.18-1112的问题通常是由以下原因导致的: 1. 未正确配置Pentaho Kettle仓库:确认您的项目中是否配置了正确的Pentaho Kettle仓库地址。您可以在项目的pom.xml文件中或使用构建工具(如Maven)中确认仓库的配置。 2. 版本号错误:请确保您在项目配置文件(如pom.xml)中指定了正确的版本号。有时候,指定了错误的版本或不存在的版本会导致解析依赖项时出错。 3. 仓库中没有相应的依赖项:确认您使用的Pentaho Kettle版本是否可在所配置的仓库中获取到。如果所需版本不存在或已被删除,则无法解决此依赖项。 4. 网络连接问题:如果您无法连接到Pentaho Kettle仓库,可能是由于网络问题导致无法解决依赖项。请确保您的网络连接正常,尝试重新解析依赖项。 若问题仍然存在,建议您检查类似的技术论坛或社区,了解是否有其他人遇到了类似的问题,并寻求相应的解决方案。 ### 回答3: 不能解决pentaho-kettle:kettle-engine:8.3.0.18-1112可能是由于以下几个原因: 1. 依赖项问题:该错误可能是由于缺少所需的依赖项导致的。建议检查项目的依赖项配置,确保所有必需的依赖项都被正确声明和引入。 2. 仓库配置问题:可能是由于仓库配置错误导致的。请检查项目的仓库配置,确保项目可以访问所需的依赖项。 3. 版本不可用:该错误可能是由于所需版本的库不可用或不存在导致的。确保所请求的库的版本名称和编号是正确的,并且可以在所配置的仓库中找到。 4. 缓存问题:有时候构建工具(如Maven)会缓存依赖项,以提高构建速度。可能是由于缓存过期或损坏导致的问题。建议清除项目的依赖项缓存,并重新执行构建过程。 如果以上方法都没有解决该问题,建议查看项目的错误日志或详细的错误信息,以了解更多关于无法解决该依赖项的具体原因。此外,也可以尝试在相关的开发社区或论坛上发表该问题,以获取更多的帮助和建议。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值