You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java 11+Quarkus 3.X集成Pentaho时依赖校验失败求助

解决Pentaho集成Quarkus 3.X/Java 11的Maven校验和错误问题

问题根源

你配置的Pentaho仓库URL是Web UI界面地址,而非Maven仓库的实际资源地址。Maven尝试从该地址下载pom文件时,获取到的是HTML页面(包含<!doctype>标签),而非合法的Maven pom,因此触发校验和不匹配错误。

解决方案步骤

1. 替换正确的Pentaho Maven仓库地址

将仓库URL修改为去掉/ui/的实际仓库地址:

<repositories>
    <repository>
        <id>PentahoRepo</id>
        <name>Pentaho repository</name>
        <!-- 修正后的仓库URL -->
        <url>https://repo.orl.eng.hitachivantara.com/native/pnt-mvn/</url>
        <layout>default</layout>
        <releases>
            <enabled>true</enabled>
            <updatePolicy>never</updatePolicy>
            <checksumPolicy>warn</checksumPolicy>
        </releases>
    </repository>
</repositories>

2. 精简依赖(适配Quarkus服务器环境)

移除不必要的桌面端依赖(如kettle-ui-swt),避免引入SWT相关的本地库冲突:

<dependencies>
    <dependency>
        <groupId>pentaho-kettle</groupId>
        <artifactId>kettle-core</artifactId>
        <version>9.4.0.0-343</version>
    </dependency>
    <dependency>
        <groupId>pentaho-kettle</groupId>
        <artifactId>kettle-engine</artifactId>
        <version>9.4.0.0-343</version>
    </dependency>
    <!-- 仅在需要数据库对话框时保留,否则可移除 -->
    <!--
    <dependency>
        <groupId>pentaho-kettle</groupId>
        <artifactId>kettle-dbdialog</artifactId>
        <version>9.4.0.0-343</version>
    </dependency>
    -->
    <!-- 使用适配Log4j2的日志插件(Quarkus默认用Log4j2) -->
    <dependency>
        <groupId>pentaho-kettle</groupId>
        <artifactId>kettle-log4j2-plugin</artifactId>
        <version>9.4.0.0-343</version>
    </dependency>
</dependencies>

3. 清理本地Maven缓存

删除本地仓库中已下载的错误文件,避免残留影响:

# Windows
rmdir /s /q C:\Users\vyeung\.m2\repository\pentaho-kettle
# Linux/macOS
rm -rf ~/.m2/repository/pentaho-kettle

Quarkus中触发Pentaho任务的示例代码

初始化Kettle环境并执行转换:

import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;

import jakarta.enterprise.context.ApplicationScoped;
import jakarta.ws.rs.GET;
import jakarta.ws.rs.Path;

@Path("/pentaho")
@ApplicationScoped
public class PentahoResource {

    @GET
    @Path("/run-transformation")
    public String runTransformation() {
        try {
            // 初始化Kettle环境
            KettleEnvironment.init();
            
            // 加载转换文件(路径可配置为资源文件或外部路径)
            TransMeta transMeta = new TransMeta("path/to/your/transformation.ktr");
            Trans trans = new Trans(transMeta);
            
            // 执行转换
            trans.execute(null);
            trans.waitUntilFinished();
            
            if (trans.getErrors() > 0) {
                return "转换执行失败,错误数:" + trans.getErrors();
            } else {
                return "转换执行成功";
            }
        } catch (KettleException e) {
            return "执行出错:" + e.getMessage();
        }
    }
}

额外注意事项

  • 确保Pentaho 9.4与Java 11兼容(官方已支持Java 8/11)
  • Quarkus打包时,若使用原生镜像,需注意Pentaho依赖的反射/资源加载配置,可通过quarkus.native.additional-build-args添加必要的反射配置
  • 若需要数据库连接,需添加对应数据库驱动依赖,并确保Kettle转换中的连接配置正确

内容的提问来源于stack exchange,提问作者vincentyeung

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 17:19:53