欢迎讨论:史上最全-kettle8.2本地编译运行文档!

-发帖者:
-参与讨论....
【主题】:史上最全-kettle8.2本地编译运行文档

kettle8.2 源码部署,新插件开发 调试

参考
https://blog.csdn.net/u013468915/article/details/82629810

https://blog.csdn.net/zougen/article/details/80825751

基于eclipse  maven 本地安装已经安装好

1.  maven conf/settings.xml整体修改为(非必要)

<?xml version="1.0" encoding="UTF-8"?>

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
          xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    <proxies></proxies>
    <servers></servers>
    <mirrors></mirrors>
    <profiles>
        <profile>
          <id>pentaho</id>
          <activation>
            <activeByDefault>true</activeByDefault>
          </activation>

          <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>
          <pluginRepositories>
            <pluginRepository>
              <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>
            </pluginRepository>
          </pluginRepositories>
        </profile>
    </profiles>
    <pluginGroups>
        <pluginGroup>org.pentaho.maven.plugins</pluginGroup>
        <pluginGroup>com.pentaho.maven.plugins</pluginGroup>
        <pluginGroup>com.github.spotbugs</pluginGroup>
    </pluginGroups>
</settings>

2.https://sourceforge.net/projects/pentaho/files/下载对应kettle版本的插件开发样本zipkettle-sdk-plugin-assembly-8.2.0.0-342.zip

a.zip 解压出来kettle-sdk-plugin-assembly-8.2.0.0-342

b.kettle-sdk-plugin-assembly-8.2.0.0-342/kettle-sdk-step-plugin通过existing maven projects 方式导入eclipse(下载驱动时间较长)

c. 各个模块的xml报错解决方法:

Plugin execution not covered by lifecycle configuration: org.pentaho.maven.plugins:license-helper-maven-plugin:1.27:check-licens

c.1. 解决c问题办法:在pom.xml build标签中添加如下元素

<pluginManagement>
        <plugins>
            <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence on the Maven build itself.-->
            <plugin>
                <groupId>org.eclipse.m2e</groupId>
                <artifactId>lifecycle-mapping</artifactId>
                <version>1.0.0</version>
                <configuration>
                    <lifecycleMappingMetadata>
                        <pluginExecutions>
                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>
                                        org.pentaho.maven.plugins
                                    </groupId>
                                    <artifactId>
                                        license-helper-maven-plugin
                                    </artifactId>
                                    <versionRange>[1.27,)</versionRange>
                                    <goals>
                                        <goal>check-license</goal>
                                    </goals>
                                </pluginExecutionFilter>
                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>

                            <pluginExecution>
                                <pluginExecutionFilter>
                                    <groupId>
                                        com.soebes.maven.plugins
                                    </groupId>
                                    <artifactId>
                                        iterator-maven-plugin
                                    </artifactId>
                                    <versionRange>
                                        [0.5.1,)
                                    </versionRange>
                                    <goals>
                                        <goal>iterator</goal>
                                    </goals>
                                </pluginExecutionFilter>

                                <action>
                                    <ignore></ignore>
                                </action>
                            </pluginExecution>
                        </pluginExecutions>
                    </lifecycleMappingMetadata>
                </configuration>
            </plugin>
        </plugins>
    </pluginManagement>

c.2 然后逐个将报错的pom.xml,鼠标悬浮到错误标签上,选中Mark goal check-license as ignored eclipse preferences

3.使用eclipse 调试kettle8.2源码

由于现在是maven管理分成多个小项目

通过existing maven projects 方式导入eclipse

打开:kettle-ui-swt子模块

3.1 找到spoon.java 使用run as java application

报错1.

java.lang.UnsatisfiedLinkError: Could not load SWT library. Reasons:
    no swt-gtk-4623 in java.library.path
    no swt-gtk in java.library.path
    Can't load library: C:\Users\26110\.swt\lib\win32\x86_64\swt-gtk-4623.dll
    Can't load library: C:\Users\26110\.swt\lib\win32\x86_64\swt-gtk.dll
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.Library.loadLibrary(Unknown Source)
    at org.eclipse.swt.internal.C.<clinit>(Unknown Source)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
    at org.eclipse.swt.internal.Converter.wcsToMbcs(Unknown Source)
    at org.eclipse.swt.widgets.Display.<clinit>(Unknown Source)
    at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:664)

解决办法:

修改pom.xml

<dependencies>

     <dependency>

      <groupId>org.eclipse.swt</groupId>

      <artifactId>org.eclipse.swt.win32.win32.x86_64</artifactId>

      <version>4.3</version>

    </dependency>

这个依赖放在<dependencies> 第一位上

然后,右键pentaho-kettle-8.2.0.0-R工程-à maven -à maven update

3.2找到spoon.java 使用run as java application

报错2.

2019/10/31 14:29:41 - General - ERROR (version Unknown, build 0 from 2019/10/31 14:29:35.981 by 26110) : Error initializing transformation
2019/10/31 14:29:41 - General - ERROR (version Unknown, build 0 from 2019/10/31 14:29:35.981 by 26110) : org.pentaho.ui.xul.XulException: Can not locate Xul document [ui/spoon.xul]
2019/10/3114:29:41-General at org.pentaho.ui.xul.impl.AbstractXulLoader.findDocument(AbstractXulLoader.java:512)
2019/10/31 14:29:41 - General -     at org.pentaho.ui.xul.impl.AbstractXulLoader.loadXul(AbstractXulLoader.java:229)
2019/10/31 14:29:41 - General -     at org.pentaho.di.ui.spoon.Spoon.init(Spoon.java:865)
2019/10/31 14:29:41 - General -     at org.pentaho.di.ui.spoon.Spoon.createContents(Spoon.java:9142)
2019/10/31 14:29:41 - General -     at org.eclipse.jface.window.Window.create(Window.java:426)
2019/10/31 14:29:41 - General -     at org.eclipse.jface.window.Window.open(Window.java:785)
2019/10/31 14:29:41 - General -     at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:9173)
2019/10/31 14:29:41 - General -     at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:707)
2019/10/31 14:29:41 - General - ERROR (version Unknown, build 0 from 2019/10/31 14:29:35.981 by 26110) : Error starting Spoon shell
2019/10/31 14:29:41 - General - ERROR (version Unknown, build 0 from 2019/10/31 14:29:35.981 by 26110) : java.lang.NullPointerException
2019/10/31 14:29:41 - General -     at org.pentaho.di.ui.spoon.Spoon.init(Spoon.java:918)
2019/10/31 14:29:41 –
General -     at org.pentaho.di.ui.spoon.Spoon.createContents(Spoon.java:9142)
2019/10/31 14:29:41 - General -     at org.eclipse.jface.window.Window.create(Window.java:426)
2019/10/31 14:29:41 - General -     at org.eclipse.jface.window.Window.open(Window.java:785)
2019/10/31 14:29:41 - General -     at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:9173)
2019/10/31 14:29:41 - General -     at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:707)

解决办法:

https://sourceforge.net/projects/pentaho/files/Pentaho%208.2/client-tools/下载pdi-ce-8.2.0.0-342.zip(下载最大的1.2GB

解压zip得到data-integration

将安装包data-integration\ui目录下的所有.xul.properties文件拷贝到源码包…\kettle-ui-swt\src/main/resources\ui目录下即可解决,.properties文件和images文件夹不要复制覆盖

找到spoon.java 使用run as java application

报错3.

2019/10/31 14:43:09 - General - ERROR (version Unknown, build 0 from 2019/10/31 14:43:04.624 by 26110) : Error starting Spoon shell stopping
2019/10/31 14:43:09 - General - ERROR (version Unknown, build 0 from 2019/10/31 14:43:04.624 by 26110) : java.lang.NoClassDefFoundError: org/jaxen/JaxenException
2019/10/31 14:43:09 - General -     at org.pentaho.ui.xul.impl.AbstractXulLoader.preProcess(AbstractXulLoader.java:357)
2019/10/31 14:43:09 - General -     at org.pentaho.ui.xul.impl.AbstractXulLoader.loadXul(AbstractXulLoader.java:113)
2019/10/31 14:43:09 - General -     at org.pentaho.ui.xul.swt.SwtXulLoader.loadXul(SwtXulLoader.java:128)
2019/10/31 14:43:09 - General -     at org.pentaho.ui.xul.swt.SwtXulLoader.loadXul(SwtXulLoader.java:122)
2019/10/31 14:43:09 - General -     at org.pentaho.ui.xul.impl.AbstractXulLoader.loadXul(AbstractXulLoader.java:239)
2019/10/31 14:43:09 - General -     at org.pentaho.di.ui.spoon.Spoon.init(Spoon.java:865)
2019/10/31 14:43:09 - General -     at org.pentaho.di.ui.spoon.Spoon.createContents(Spoon.java:9142)
2019/10/31 14:43:09 - General -     at org.eclipse.jface.window.Window.create(Window.java:426)
2019/10/31 14:43:09 - General -     at org.eclipse.jface.window.Window.open(Window.java:785)
2019/10/31 14:43:09 - General -     at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:9173)
2019/10/31 14:43:09 - General -     at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:707)
2019/10/31 14:43:09 - General - Caused by: java.lang.ClassNotFoundException: org.jaxen.JaxenException
2019/10/31 14:43:09 - General -     at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
2019/10/31 14:43:09 - General -     at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
2019/10/31 14:43:09 - General -     at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335)
2019/10/31 14:43:09 - General -     at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
2019/10/31 14:43:09 - General -     ... 11 more

解决办法:pom.xml中引用此jar包即可解决  

 <dependency>
        <groupId>jaxen</groupId>
        <artifactId>jaxen</artifactId>
        <version>1.2.0</version>
    </dependency>

找到spoon.java 使用run as java application

报错4.

2019/10/31 14:53:38 - General - ERROR (version Unknown, build 0 from 2019/10/31 14:53:31.968 by 26110) : Error starting Spoon shell
2019/10/31 14:53:38 - General - ERROR (version Unknown, build 0 from 2019/10/31 14:53:31.968 by 26110) : java.lang.NullPointerException
2019/10/31 14:53:38 - General -     at org.pentaho.di.ui.util.EnvironmentUtils.getUserAgent(EnvironmentUtils.java:86)
2019/10/31 14:53:38 - General -     at org.pentaho.di.ui.util.EnvironmentUtils.isUnsupportedBrowserEnvironment(EnvironmentUtils.java:61)
2019/10/31 14:53:38 - General -     at org.pentaho.di.ui.spoon.Spoon.checkEnvironment(Spoon.java:9097)
2019/10/31 14:53:38 - General -     at org.pentaho.di.ui.spoon.Spoon.start(Spoon.java:9174)
2019/10/31 14:53:38 - General -     at org.pentaho.di.ui.spoon.Spoon.main(Spoon.java:707)
stopping

解决办法:

修改EnvironmentUtils.java

 

protected String getUserAgent() {
    Browser browser;
    try {
      browser = new Browser(  new Shell(), SWT.NONE );
    } catch ( SWTError e ) {
      log.logError( "Could not open a browser", e );
      return  "";
    }

    Object userAgentO = browser.evaluate( "return window.navigator.userAgent;" );
    String userAgent = null;
    if(userAgentO != null) {
        userAgent = userAgentO.toString();
    }else {
        userAgent = null;
    }
    browser.close();
    return userAgent;
  }

 到现在kettle-ui-swt就可以启动了

 启动后如何连入插件的源码进行调试开发, 

 kettle-ui-swt右键 ->build path->configure build path ->java build path->projects->add 将之前导入到eclipse中的kettle-sdk-step-plugin maven 项目添加到kettle-ui-swt项目中

  kettle-ui-swt 项目中找到Spoon.java 右键 ->debug as ->debug configurations->arguments->VMArguments添加

 -DKETTLE_PLUGIN_CLASSES=org.pentaho.di.sdk.samples.steps.demo.DemoStepMeta

 ->apply ->debug

 至此 在打开的ui中的转换-》转换中就可以找到Demo Step

 DemoStepDialogopen方法添加断点便可进行调试

————————————————

原文链接:https://blog.csdn.net/happyzxs/article/details/102848405

 发表评论     发表时间:『2020-03-15 12:01:17』


扫描二维码关注网站最新动态