WebSpoon9.0(KETTLE的WEB版本)编译 + tomcatdocker部署 + 远程调试教程

前言

Kettle简介 Kettle是一款国外开源的ETL工具,纯Java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定

WebSpoon是Kettle的Web版本,由Kettle社区维护,不受Pentaho支持,实现了Kettle的大部分功能

拉取代码

仓库地址:https://github.com/HiromuHota/pentaho-kettle

复制代码
git clone https://github.com/HiromuHota/pentaho-kettle.git

编译

配置 maven 的环境变量

settings.xml 放在你用户目录下 /.m2 中按需修改

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">

  <!-- This is the recommended settings.xml for development of Hitachi Vantara projects. -->

  <!--
  If your wish to mirror everything through pentaho-public's repo uncomment bellow. Not recommended
  for external developers.
  -->
  <!--
  <mirrors>
    <mirror>
      <id>pentaho-public</id>
      <url>https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/</url>
      <mirrorOf>*</mirrorOf>
    </mirror>
  </mirrors>
  -->

  <!--
  Don't forget to add setting-security.xml so that the password get's decrypted  
  -->
  <servers>
    <server>
      <id>pentaho-public</id>
      <username>devreaduser</username>
      <password>{zIMyJWfHKfoHiBJAVsAgW4E5BcJzR+nhTtgPy0J+/rs=}</password>
    </server>
  </servers>

  <!--
  You might want to tweak the 'updatePolicy' configuration to fit your need on having updated snapshots and
  releases. Our recommendation is to set it to 'never' and run maven with the '-U' flag when needed.
  -->
  <profiles>
    <profile>
      <id>pentaho</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
      <repositories>
        <repository>
          <id>pentaho-public</id>
          <name>Pentaho Public</name>
          <url>https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/</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>https://repo.orl.eng.hitachivantara.com/artifactory/pnt-mvn/</url>
          <releases>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </releases>
          <snapshots>
            <enabled>true</enabled>
            <updatePolicy>always</updatePolicy>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>

  <!-- this lets you call plugins from these groups in their short form -->
  <pluginGroups>
    <pluginGroup>org.pentaho.maven.plugins</pluginGroup>
    <pluginGroup>com.pentaho.maven.plugins</pluginGroup>
    <pluginGroup>com.github.spotbugs</pluginGroup>
  </pluginGroups>
</settings>

本地构建以下依赖库:

pentaho-xul-swt

复制代码
git clone -b webspoon-9.0 https://github.com/HiromuHota/pentaho-commons-xul.git
cd pentaho-commons-xul
mvn clean install -pl swt -DskipTests

rap

拉取代码后,进入 rap/releng/org.eclipse.rap.build 目录修改 pom.xml 文件, 找到 properties 标签

将 jetty-repo.url 标签值改为 https://download.eclipse.org/jetty/updates/jetty-bundles-9.x/9.4.44.v20210927/

将 rap-extra-repo.url 标签值改为 https://download.eclipse.org/rt/rap/base-platforms/3.14/extra-dependencies/

复制代码
git clone -b webspoon-3.12.0 https://github.com/HiromuHota/rap.git
cd rap
mvn clean install -DskipTests

pentaho-vfs-browser

复制代码
git clone -b webspoon-9.0 https://github.com/HiromuHota/apache-vfs-browser.git
cd apache-vfs-browser
mvn clean install -DskipTests

以上操作无误后,执行 mvn clean install -DskipTests 构建项目

构建成功后可在 assemblies/client/target 目录下找到 spoon.war 部署包

也可直接在 https://github.com/HiromuHota/pentaho-kettle/releases 下载已经构建好的 war 包


部署

tomcat 部署

spoon.war 放入 tomcat/webapps 目录下
点击下载 9.x 版本的 pdi-ce-xxxx.zip 并解压

systemplugins 目录放入 tomcat/bin

启动 tomcat, 访问

Docker部署
复制代码
# 拉取镜像
docker pull hiromuhota/webspoon
# 运行, 访问 http://localhost:8080
docker run -d -p 8080:8080 hiromuhota/webspoon
Docker-compose 部署

docker-compose.yml 文件:

复制代码
version: "3.3"

services:
  kettle:
    image: hiromuhota/webspoon:latest
    volumes:
      # 如需添加jar包则将jar包挂载进docker容器
      - ./volumes/lib/mysql-connector-java-5.1.48.jar:/usr/local/tomcat/webapps/spoon/WEB-INF/lib/mysql-connector-java-5.1.48.jar
      # 保证重启后资源库数据不丢失,需挂载此目录
      # 需要提前创建好该文件, 并授权: mkdir -m 777 ./volumes/.kettle
      - ./volumes/.kettle:/home/tomcat/.kettle
      # 如需汉化,挂载此目录并添加配置
      - ./volumes/setenv.sh:/usr/local/tomcat/bin/setenv.sh
    environment:
      - LANG=zh_CN.UTF-8
    ports:
      - "9002:8080"

setenv.sh 文件

复制代码
CLASSPATH=/usr/local/tomcat/lib/webspoon-security-9.0.0.0-423-22.jar
CATALINA_OPTS="-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH=true"
JAVA_OPTS="-Duser.language=zh -Duser.region=CN -Dfile.encoding=UTF-8"

启动与停止

复制代码
# 在 docker-compose.yml 文件所在路径下执行
# 启动
docker compose up -d
# 停止
docker compose down

远程调试

开启远程调试服务

复制代码
docker run -d -p 8080:8080 -p 9003:8000 
-e JPDA_ADDRESS=8000 
-e CATALINA_OPTS="-Dorg.eclipse.rap.rwt.developmentMode=true" 
hiromuhota/webspoon catalina.sh jpda run

或配置为 docker-compose.yml 文件

复制代码
version: "3.3"

services:
  kettle:
    image: hiromuhota/webspoon:latest
    environment:
      - JPDA_ADDRESS=8000
      - CATALINA_OPTS="-Dorg.eclipse.rap.rwt.developmentMode=true"
    ports:
      - "8080:8080"
      - "9003:8000"
    command: ["catalina.sh", "jpda", "run"]

idea 打开本地编译好的源码

增加远程调试配置 Remote JVM debuge, 随后启动

控制台打印如下内容即可

Connected to the target VM, address: '192.168.5.22:9003', transport: 'socket'

相关推荐
ℋᙚᵐⁱᒻᵉ鲸落3 小时前
移动端滑动手势冲突:overflow: auto导致外层横向滑动失效
前端·javascript·css·vue.js·html
默_笙5 小时前
🎃 前端学了 Next.js,后端该学啥?NestJS 就是 Node 版的蜜雪冰城
前端·javascript
前端snow6 小时前
ai agent --- 实现 openclaw 定时间效果
前端
码云之上6 小时前
换模型之后,Chatbot 为什么要自己做 compact?
前端·agent·前端工程化
星栈6 小时前
自定义 UI-UX-Pro-Max 的 CSV 知识库,把 AI 生成的后台拉回行业该有的样子
前端·agent·weui
研☆香7 小时前
简单的图片上传 删除 预览
前端
ITresearchGuest7 小时前
我用 AI 一小时写了一个世界杯数据可视化平台|前端 VibeCoding 初体验
前端·人工智能·信息可视化
慧一居士8 小时前
Vite项目中使用Less步骤,详细使用示例
前端·css
花间相见8 小时前
【LangChain组件03】—— LangChain Agents 执行与状态:工作流程与状态管理实战
java·前端·langchain
kyriewen9 小时前
面试官让我用 AI 重构一个 8 年陈的 React 组件——他说他不看代码,只看我会不会拆
前端·javascript·面试