为了编译能通过,maven需要加入仓库地址以及一些必须要的包的依赖情况:

  1. pentaho中央仓库:

在properties里面配置版本号:

<kettle.version>6.0.0.0-353</kettle.version>

<repository>

<id>pentaho1</id>

<name>Pentaho Repository1</name>

<url>http://repository.pentaho.org/artifactory/repo/</url>

<snapshots>

<enabled>true</enabled>

</snapshots>

</repository>

2.kettle一些核心的依赖,由于有些jar包下载不下来,所以exclution掉之后再去mvn仓库找合适的包:

<!-- kettle begin -->

<dependency>

<groupId>pentaho-kettle</groupId>

<artifactId>kettle-core</artifactId>

<version>${kettle.version}</version>

<exclusions>

<exclusion>

<groupId>jug-lgpl</groupId>

<artifactId>jug-lgpl</artifactId>

</exclusion>

<exclusion>

<groupId>org.apache.commons</groupId>

<artifactId>commons-vfs2</artifactId>

</exclusion>

<exclusion>

<groupId>secondstring</groupId>

<artifactId>secondstring</artifactId>

</exclusion>

<exclusion>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

</exclusion>

<exclusion>

<artifactId>xercesImpl</artifactId>

<groupId>xerces</groupId>

</exclusion>

<exclusion>

<groupId>org.apache.xmlgraphics</groupId>

<artifactId>batik-js</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>pentaho-kettle</groupId>

<artifactId>kettle-engine</artifactId>

<version>${kettle.version}</version>

<exclusions>

<exclusion>

<groupId>org.apache.commons</groupId>

<artifactId>commons-vfs2</artifactId>

</exclusion>

</exclusions>

</dependency>

<dependency>

<groupId>pentaho-library</groupId>

<artifactId>libbase</artifactId>

<version>${kettle.version}</version>

</dependency>

<dependency>

<groupId>pentaho-library</groupId>

<artifactId>libformula</artifactId>

<version>${kettle.version}</version>

</dependency>

<dependency>

<groupId>pentaho</groupId>

<artifactId>metastore</artifactId>

<version>${kettle.version}</version>

</dependency>

<dependency>

<groupId>pentaho</groupId>

<artifactId>pentaho-mongodb-plugin</artifactId>

<version>${kettle.version}</version>

</dependency>

<dependency>

<groupId>pentaho</groupId>

<artifactId>pentaho-mongo-utils</artifactId>

<version>6.0.0.0-351</version>

</dependency>

<dependency>

<groupId>org.apache.commons</groupId>

<artifactId>commons-vfs2</artifactId>

<version>2.1</version>

</dependency>

<dependency>

<groupId>net.sourceforge.jexcelapi</groupId>

<artifactId>jxl</artifactId>

<version>2.6.12</version>

</dependency>

<dependency>

<groupId>rhino</groupId>

<artifactId>js</artifactId>

<version>1.7R2</version>

</dependency>

<!-- kettle end -->

3.下载jar包时当遇到500m大小的jar时,暂停mvn手动下载然后移动到本地仓库

插件的路径:D:\dev\apache-maven-3.3.9\repository\pentaho\pentaho-big-data-plugin\6.0.0.0-353

4.java调本地ktr代码:

 import java.util.List;

 import org.junit.Test;
import org.junit.runner.RunWith;
import org.pentaho.di.core.KettleEnvironment;
import org.pentaho.di.core.Result;
import org.pentaho.di.core.RowMetaAndData;
import org.pentaho.di.core.exception.KettleException;
import org.pentaho.di.job.Job;
import org.pentaho.di.job.JobMeta;
import org.pentaho.di.trans.Trans;
import org.pentaho.di.trans.TransMeta;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; import cn.shunlu.repository.BaseDataInitTest; @RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="/applicationContext.xml")
public class KettleTest extends BaseDataInitTest{ private static Logger logger = LoggerFactory.getLogger(KettleTest.class); private static final String KETTLE_PLUGIN_BASE_FOLDER = "E:\\dev\\pentaho\\data-integration\\plugins\\";
// private static final String KETTLE_PLUGIN_BASE_FOLDER = "C:\\dev\\pentaho6\\data-integration\\system\\karaf\\system\\pentaho";
// private static final String KETTLE_PLUGIN_BASE_FOLDER = "C:\\dev\\pentaho6\\data-integration\\plugins"; /**
* 调转换
*/
@Test
public void test() {
logger.info("hi"+ logger.getClass().getName());
try
{
//这里是设置我们pentaho的运行环境,实际上我们加入的maven依赖只是为了让代码编译通过,实际真正干活的还是pentaho自己
//也可以自己建个maven的私服把pentaho里面的运行环境的jar丢上去,就能通过java调了
System.setProperty("KETTLE_PLUGIN_BASE_FOLDERS", KETTLE_PLUGIN_BASE_FOLDER);
String transPath = "e:\\tmp\\2.ktr"; KettleEnvironment.init(); TransMeta transMeta = new TransMeta(transPath); Trans trans = new Trans(transMeta);
System.out.println(trans);
trans.setVariable("importOrExport", "出口");
trans.setVariable("batchId", "57bebcfd816c0dffb72d6fa4");
trans.setVariable("codeMap_type", "country");
trans.execute(null); trans.waitUntilFinished(); Result r = trans.getResult();
List<RowMetaAndData> rowsResult = r.getRows(); if (trans.getErrors() > 0)
{
throw new Exception(trans.getResult().getLogText());
}
}
catch (Exception e)
{
e.printStackTrace();
}
} /**
*
* @description 调job
* @date 2016年9月6日
* @author
*/
@Test
public void testJob() throws Exception{
logger.info("hi"+ logger.getClass().getName());
try {
System.setProperty("KETTLE_PLUGIN_BASE_FOLDERS", KETTLE_PLUGIN_BASE_FOLDER); String jobPath = "e:\\tmp\\job1.kjb";
KettleEnvironment.init(); JobMeta jobMeta = new JobMeta(jobPath, null); Job job = new Job(null, jobMeta); job.setVariable("importOrExport", "出口");
job.setVariable("batchId", "57bebcfd816c0dffb72d6fa4");
job.setVariable("codeMap_type", "country"); job.start();
job.waitUntilFinished(); if (job.getErrors() > 0) {
throw new Exception(
"There are errors during job exception!(执行job发生异常)");
}
} catch (KettleException e) {
e.printStackTrace();
}
} }

注:加依赖的目的就是为了让编译能通过,最后运行的环境其实还是我们手动指定的plugins目录如图所示:

这里只是写了个testCase来调用我们本地.ktr和.kjb pentaho这边接收参数的话,我也是只做了个简单的job.

调转换就直接这么接收参数:

如果是调job接收命名参数需要在他的下一个步骤转换里面设置写命名参数就行了:

然后这个转换还是跟上一个转换一样的,而且参数也是那么接收的.${paramName}这样子.其实代码网上很多,但是整合maven那些依赖之间的关系特麻烦.

最近整合发现个问题,如果不将mongo-plugins和mongo-utils包放入plugins目录里面也无法成功调用,因此需要去到,

增加完之后的plugins目录:

Javaweb整合mongo和kettle6.0的环境配置的更多相关文章

  1. cocos2d-x3.0 windows 环境配置

    cocos2d-x3.0 windows 环境配置 参考Oo泡泡糖oO的CSDN博文 :http://blog.csdn.net/u010296979/article/details/24273393 ...

  2. springboot学习入门简易版八---springboot2.0多环境配置、整合mybatis mysql8+(19-20)

    2.11 SpringBoot多环境配置(19)  application.properties中配置 Spring.profiles.active=prd 配置环境: Application-dev ...

  3. 【MRPT】【icp-slam-live】Vs2013+ cmake3.6.1 + mrpt1.4.0+opencv2.9.4+wxWidget3.0.2环境配置

    Win10下Vs2013 + cmake3.6.1 + mrpt1.4.0+opencv2.9.4+wxWidget3.1.0环境配置 所接触过的最令我崩溃的环境配置.之前没有考虑到vs2013 20 ...

  4. Berkeley DB (VC6.0 编译环境配置)

    操作系统:winxp VC环境:VC6.0 必需文件:Berkeley DB安装文件(db-.msi) 下载地址:http://www.oracle.com/technology/software/p ...

  5. 75.VS2013和opencv3.1.0开发环境配置

    首先要做的就是 开发环境配置,具体过程如下: Step 1:OpenCV环境变量配置 我的电脑--->属性--->高级系统设置--->高级--->环境变量--->系统变量 ...

  6. activiti自定义流程之整合(一):整体环境配置

    结合之前所说的自定义流程的思路,分别是后台.前台.整合,之前的内容也分别进行了相关的练习和尝试,现在就该到了最后的整合了,依旧是以实现功能为目的,细节暂且不去管他. 因为我们实际项目后端用的是spri ...

  7. mac在xampp下使用yii2.0开发环境配置

    在mac上装环境,折腾了我好久.先用是mac自带的php,但自带的PHP很多扩展都需要自己安装.libevent,memcache等扩展都安装好了之后,发现pdo_mysql.dll扩展又没有,悲剧的 ...

  8. Win7 OpenCV 3.0.0 VS2013 环境配置

    参考资料:http://jingyan.baidu.com/article/75ab0bcbee4b47d6864db2fc.html 注: x86 x64 这些根据自己的系统以及需求而定, 这里就不 ...

  9. gtk+3.0的环境配置及基于gtk+3.0的python简单样例

    /*********************************************************************  * Author  : Samson  * Date   ...

随机推荐

  1. HDU2594——Simpsons’ Hidden Talents

    Problem Description Homer: Marge, I just figured out a way to discover some of the talents we weren’ ...

  2. 【字母树+贪心】【HDU3460】【Ancient Printer】

    题目大意: 一个打印机 只有 打印,删除,a-z.操作 给你一堆队名,如何才能操作次数最少输出全部 (字典树节点数-1)*2 输入,删除操作数 字符串数 printf操作数 最长字符串的长度 最后一个 ...

  3. Windows文件操作的API函数[转载]

    在VC中,大多数情况对文件的操作都使用系统提供的 API 函数,但有的函数我们不是很熟悉,以下提供一些文件操作 API 函数介绍: 一般文件操作 API CreateFile 打开文件 要对文件进行读 ...

  4. Asp.Net Web API 2

    Asp.Net Web API 2第十八课——Working with Entity Relations in OData   前言 阅读本文之前,您也可以到Asp.Net Web API 2 系列导 ...

  5. 详解 CSS 属性 - 伪类和伪元素的区别(再也不用概念盲了!!!)

    首先,阅读 w3c 对两者的定义: CSS 伪类用于向某些选择器添加特殊的效果. CSS 伪元素用于将特殊的效果添加到某些选择器. 可以明确两点,第一两者都与选择器相关,第二就是添加一些“特殊”的效果 ...

  6. PHP自学4——通过函数将数组数据输出到html的Table标签中(使用函数的例子)

    这一节其实说实话并没有什么干货,不过为了防止PO主的懒癌的复发,还是坚持放一点东西,即使是内容和长度都令人发指.这一节通过一个函数来实现将数组中的内容输出html的Table标签当中显示. 函数文件— ...

  7. hibernate-annotation CascadeType.PERSIST不起作用的解决方法

    有如下两个实体类 , Student和Grade 为多对一关系. Student.java @Entity public class Student { private Integer id; pri ...

  8. Tera Term——访问linux的ssh工具

    个人感觉他是一款免费的并且比较好用的ssh工具,下载地址: http://logmett.com/index.php?/products/teraterm.html 下载之后一路下一步就可以了.可以选 ...

  9. Qt5 文本编辑

    [应用场景]:在编辑框中输入一段文字,用鼠标选取文字,修改工具栏上的字体.字号大小.加粗.斜体等属性,选取的文字即发生相应的变化.       一. 任何一个文本编辑器的程序都要用到QTextEdit ...

  10. jquery 实现横向滑动自动切换源码(同时显示多张图片)

    html代码: <!doctype html> <html lang="en"> <head> <meta charset="U ...